Merge pull request #2114 from wairbut-m2c/iagirre-booth-assignment-removal
Iagirre booth assignment removal
This commit is contained in:
@@ -3,10 +3,26 @@ class Poll
|
||||
belongs_to :booth
|
||||
belongs_to :poll
|
||||
|
||||
before_destroy :destroy_poll_shifts, only: :destroy
|
||||
|
||||
has_many :officer_assignments, class_name: "Poll::OfficerAssignment", dependent: :destroy
|
||||
has_many :officers, through: :officer_assignments
|
||||
has_many :voters
|
||||
has_many :partial_results
|
||||
has_many :recounts
|
||||
|
||||
def shifts?
|
||||
shifts.empty? ? false : true
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def shifts
|
||||
Poll::Shift.where(booth_id: booth_id, officer_id: officer_assignments.pluck(:officer_id), date: officer_assignments.pluck(:date))
|
||||
end
|
||||
|
||||
def destroy_poll_shifts
|
||||
shifts.destroy_all
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -14,7 +14,8 @@
|
||||
method: :delete,
|
||||
remote: true,
|
||||
title: t("admin.booth_assignments.manage.actions.unassign"),
|
||||
class: "button hollow alert" %>
|
||||
class: "button hollow alert",
|
||||
data: (booth_assignment.shifts? ? {confirm: "#{t("admin.poll_booth_assignments.alert.shifts")}"} : nil) if !@poll.expired? %>
|
||||
</td>
|
||||
<% else %>
|
||||
<td>
|
||||
@@ -26,6 +27,6 @@
|
||||
method: :post,
|
||||
remote: true,
|
||||
title: t("admin.booth_assignments.manage.actions.assign"),
|
||||
class: "button" %>
|
||||
class: "button" if !@poll.expired? %>
|
||||
</td>
|
||||
<% end %>
|
||||
|
||||
@@ -558,6 +558,8 @@ en:
|
||||
assign: Assign booth
|
||||
unassign: Unassign booth
|
||||
poll_booth_assignments:
|
||||
alert:
|
||||
shifts: "There are shifts associated to this booth. If you remove the booth assignment, the shifts will be also deleted. Continue?"
|
||||
flash:
|
||||
destroy: "Booth not assigned anymore"
|
||||
create: "Booth assigned"
|
||||
|
||||
@@ -558,6 +558,8 @@ es:
|
||||
assign: Asignar urna
|
||||
unassign: Asignar urna
|
||||
poll_booth_assignments:
|
||||
alert:
|
||||
shifts: "Hay turnos asignados para esta urna. Si la desasignas, esos turnos se eliminarán. ¿Deseas continuar?"
|
||||
flash:
|
||||
destroy: "Urna desasignada"
|
||||
create: "Urna asignada"
|
||||
|
||||
@@ -106,6 +106,41 @@ 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
|
||||
|
||||
29
spec/models/poll/booth_assignment_spec.rb
Normal file
29
spec/models/poll/booth_assignment_spec.rb
Normal file
@@ -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
|
||||
Reference in New Issue
Block a user