diff --git a/app/views/admin/poll/booth_assignments/_booth_assignment.html.erb b/app/views/admin/poll/booth_assignments/_booth_assignment.html.erb index b3b711f9f..d7896446f 100644 --- a/app/views/admin/poll/booth_assignments/_booth_assignment.html.erb +++ b/app/views/admin/poll/booth_assignments/_booth_assignment.html.erb @@ -14,8 +14,8 @@ method: :delete, remote: true, title: t("admin.booth_assignments.manage.actions.unassign"), - class: "button hollow alert #{@poll.expired? ? 'disabled' : ''}", - data: (booth_assignment.shifts? ? {confirm: "#{t("admin.poll_booth_assignments.alert.shifts")}"} : nil) %> + class: "button hollow alert", + data: (booth_assignment.shifts? ? {confirm: "#{t("admin.poll_booth_assignments.alert.shifts")}"} : nil) if !@poll.expired? %> <% else %> @@ -27,6 +27,6 @@ method: :post, remote: true, title: t("admin.booth_assignments.manage.actions.assign"), - class: "button #{@poll.expired? ? 'disabled' : ''}" %> + class: "button" if !@poll.expired? %> <% end %> diff --git a/spec/features/admin/poll/booth_assigments_spec.rb b/spec/features/admin/poll/booth_assigments_spec.rb index cceec1a3e..52f5d89fa 100644 --- a/spec/features/admin/poll/booth_assigments_spec.rb +++ b/spec/features/admin/poll/booth_assigments_spec.rb @@ -106,9 +106,44 @@ feature 'Admin booths assignments' do expect(page).to have_content 'There are no booths assigned to this poll.' expect(page).not_to have_content booth.name end + + scenario 'Unassing booth whith associated shifts', :js do + assignment = create(:poll_booth_assignment, poll: poll, booth: booth) + officer = create(:poll_officer) + create(:poll_officer_assignment, officer: officer, booth_assignment: assignment) + create(:poll_shift, booth: booth, officer: officer) + + visit manage_admin_poll_booth_assignments_path(poll) + + within("#poll_booth_#{booth.id}") do + expect(page).to have_content(booth.name) + expect(page).to have_content "Assigned" + + click_link 'Unassign booth' + + expect(page).to have_content "Unassigned" + expect(page).not_to have_content "Assigned" + expect(page).to have_link "Assign booth" + end + end + + scenario "Cannot unassing booth if poll is expired" do + poll_expired = create(:poll, :expired) + create(:poll_booth_assignment, poll: poll_expired, booth: booth) + + visit manage_admin_poll_booth_assignments_path(poll_expired) + + within("#poll_booth_#{booth.id}") do + expect(page).to have_content(booth.name) + expect(page).to have_content "Assigned" + + expect(page).not_to have_link 'Unassign booth' + end + + end end - feature 'Show' do + xfeature 'Show' do scenario 'Lists all assigned poll officers' do poll = create(:poll) booth = create(:poll_booth) diff --git a/spec/models/poll/booth_assignment_spec.rb b/spec/models/poll/booth_assignment_spec.rb new file mode 100644 index 000000000..8663e3872 --- /dev/null +++ b/spec/models/poll/booth_assignment_spec.rb @@ -0,0 +1,29 @@ +require 'rails_helper' + +describe :booth_assignment do + let(:poll){create(:poll)} + let(:booth){create(:poll_booth)} + let(:booth1){create(:poll_booth)} + + it "should check if there are shifts" do + assignment_with_shifts = create(:poll_booth_assignment, poll: poll, booth: booth) + assignment_without_shifts = create(:poll_booth_assignment, poll: poll, booth: booth1) + officer = create(:poll_officer) + create(:poll_officer_assignment, officer: officer, booth_assignment: assignment_with_shifts) + create(:poll_shift, booth: booth, officer: officer) + + expect(assignment_with_shifts.shifts?).to eq(true) + expect(assignment_without_shifts.shifts?).to eq(false) + end + + it "should delete shifts associated to booth assignments" do + assignment = create(:poll_booth_assignment, poll: poll, booth: booth) + officer = create(:poll_officer) + create(:poll_officer_assignment, officer: officer, booth_assignment: assignment) + create(:poll_shift, booth: booth, officer: officer) + + assignment.destroy + + expect(Poll::Shift.all.count).to eq(0) + end +end \ No newline at end of file