diff --git a/app/controllers/admin/poll/booth_assignments_controller.rb b/app/controllers/admin/poll/booth_assignments_controller.rb
index 0f01ab462..64e67c6ca 100644
--- a/app/controllers/admin/poll/booth_assignments_controller.rb
+++ b/app/controllers/admin/poll/booth_assignments_controller.rb
@@ -24,7 +24,8 @@ class Admin::Poll::BoothAssignmentsController < Admin::BaseController
def show
@poll = ::Poll.find(params[:poll_id])
- @booth_assignment = @poll.booth_assignments.includes(:recounts, officer_assignments: [officer: [:user]]).find(params[:id])
+ @booth_assignment = @poll.booth_assignments.includes(:recounts, :voters, officer_assignments: [officer: [:user]]).find(params[:id])
+ @voters_by_date = @booth_assignment.voters.group_by {|v| v.created_at.to_date}
end
private
diff --git a/app/helpers/poll_recounts_helper.rb b/app/helpers/poll_recounts_helper.rb
new file mode 100644
index 000000000..1246e8f98
--- /dev/null
+++ b/app/helpers/poll_recounts_helper.rb
@@ -0,0 +1,7 @@
+module PollRecountsHelper
+
+ def recount_for_date(recounts, date)
+ recounts.select {|r| r.date.to_date == date}.first
+ end
+
+end
\ No newline at end of file
diff --git a/app/views/admin/poll/booth_assignments/show.html.erb b/app/views/admin/poll/booth_assignments/show.html.erb
index e62f17b95..2652ee2bb 100644
--- a/app/views/admin/poll/booth_assignments/show.html.erb
+++ b/app/views/admin/poll/booth_assignments/show.html.erb
@@ -59,13 +59,23 @@
- <% @booth_assignment.recounts.sort_by{|r| r.date}.each do |recount| %>
-
- | <%= l recount.date.to_date %> |
+ <% (@poll.starts_at.to_date..@poll.ends_at.to_date).each do |voting_date| %>
+ <% recount = recount_for_date(@booth_assignment.recounts, voting_date) %>
+ <% system_count = @voters_by_date[voting_date].present? ? @voters_by_date[voting_date].size : 0 %>
+ <% if recount.present? %>
+
+ | <%= l voting_date %> |
<%= recount.count %> |
- 0 |
+ <%= system_count %> |
+
+ <% else %>
+
+ | <%= l voting_date %> |
+ - |
+ <%= system_count %> |
<% end %>
+ <% end %>
<% end %>
diff --git a/spec/features/admin/poll/booth_assigments_spec.rb b/spec/features/admin/poll/booth_assigments_spec.rb
index ff2ae833c..96939aa47 100644
--- a/spec/features/admin/poll/booth_assigments_spec.rb
+++ b/spec/features/admin/poll/booth_assigments_spec.rb
@@ -92,10 +92,22 @@ feature 'Admin booths assignments' do
poll = create(:poll)
booth = create(:poll_booth)
booth_assignment = create(:poll_booth_assignment, poll: poll, booth: booth)
- recount = create(:poll_recount, booth_assignment: booth_assignment, count: 33)
+ officer_assignment_1 = create(:poll_officer_assignment, booth_assignment: booth_assignment, date: poll.starts_at)
+ officer_assignment_2 = create(:poll_officer_assignment, booth_assignment: booth_assignment, date: poll.ends_at)
+
+ recount_1 = create(:poll_recount,
+ booth_assignment: booth_assignment,
+ officer_assignment: officer_assignment_1,
+ date: officer_assignment_1.date,
+ count: 33)
+ recount_2 = create(:poll_recount,
+ booth_assignment: booth_assignment,
+ officer_assignment: officer_assignment_2,
+ date: officer_assignment_2.date,
+ count: 1)
booth_assignment_2 = create(:poll_booth_assignment, poll: poll)
- recount_2 = create(:poll_recount, booth_assignment: booth_assignment_2, count: 100)
+ other_recount = create(:poll_recount, booth_assignment: booth_assignment_2, count: 100)
visit admin_poll_path(poll)
click_link 'Booths (2)'
@@ -104,9 +116,56 @@ feature 'Admin booths assignments' do
click_link 'Recounts'
within('#recounts_list') do
- expect(page).to have_content recount.count
- expect(page).to_not have_content recount_2.count
+ expect(page).to_not have_content other_recount.count
+
+ within("#recount_#{recount_1.id}") do
+ expect(page).to have_content recount_1.count
+ end
+
+ within("#recount_#{recount_2.id}") do
+ expect(page).to have_content recount_2.count
+ end
+
end
end
+
+ scenario 'Marks recount values with count-errors' do
+ poll = create(:poll)
+ booth = create(:poll_booth)
+ booth_assignment = create(:poll_booth_assignment, poll: poll, booth: booth)
+ today = Time.current.to_date
+ officer_assignment = create(:poll_officer_assignment, booth_assignment: booth_assignment, date: today)
+
+ recount = create(:poll_recount,
+ booth_assignment: booth_assignment,
+ officer_assignment: officer_assignment,
+ date: officer_assignment.date,
+ count: 1)
+
+ visit admin_poll_booth_assignment_path(poll, booth_assignment)
+ click_link 'Recounts'
+
+ within('#recounts_list') do
+ expect(page).to have_css("#recount_#{recount.id}.count-error")
+ within("#recount_#{recount.id}") do
+ expect(page).to have_content recount.count
+ expect(page).to have_content 0
+ end
+ end
+
+ create(:poll_voter, :valid_document, poll: poll, booth_assignment: booth_assignment)
+
+ visit admin_poll_booth_assignment_path(poll, booth_assignment)
+ click_link 'Recounts'
+
+ within('#recounts_list') do
+ expect(page).to_not have_css('.count-error')
+ within("#recount_#{recount.id}") do
+ expect(page).to have_content(recount.count)
+ end
+ end
+ end
+
+
end
end
\ No newline at end of file