From 12cdbf6196a5e053f929dfc99c25846b76d7c413 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Mon, 23 Sep 2019 00:37:34 +0200 Subject: [PATCH 1/2] Simplify assigning officer to a poll in specs While it could be argued we're hiding the real way we've defined associations in our models, the tests are so much easier to read when we don't have so many lines just creating data. Furthermore, developers who care about vertically aligning the code will be glad to see some variables disrupting this alignment are now gone. --- spec/factories/polls.rb | 8 +++- .../admin/poll/booth_assigments_spec.rb | 9 ++-- .../admin/poll/officer_assignments_spec.rb | 16 ++----- spec/features/budget_polls/voter_spec.rb | 3 +- spec/features/officing/booth_spec.rb | 20 +++------ spec/features/officing/residence_spec.rb | 3 +- spec/features/officing/voters_spec.rb | 28 ++++--------- spec/features/polls/polls_spec.rb | 4 +- spec/features/polls/voter_spec.rb | 3 +- spec/models/poll/officer_spec.rb | 42 +++++++------------ 10 files changed, 47 insertions(+), 89 deletions(-) diff --git a/spec/factories/polls.rb b/spec/factories/polls.rb index a6f700007..ca3c10649 100644 --- a/spec/factories/polls.rb +++ b/spec/factories/polls.rb @@ -145,9 +145,15 @@ FactoryBot.define do factory :poll_officer_assignment, class: "Poll::OfficerAssignment" do association :officer, factory: :poll_officer - association :booth_assignment, factory: :poll_booth_assignment date { Date.current } + transient { poll { association(:poll) } } + transient { booth { association(:poll_booth) } } + + booth_assignment do + association :poll_booth_assignment, poll: poll, booth: booth + end + trait :final do final { true } end diff --git a/spec/features/admin/poll/booth_assigments_spec.rb b/spec/features/admin/poll/booth_assigments_spec.rb index 905eb48a2..987ba99ad 100644 --- a/spec/features/admin/poll/booth_assigments_spec.rb +++ b/spec/features/admin/poll/booth_assigments_spec.rb @@ -118,9 +118,8 @@ describe "Admin booths assignments" do 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_officer_assignment, officer: officer, poll: poll, booth: booth) create(:poll_shift, booth: booth, officer: officer) visit manage_admin_poll_booth_assignments_path(poll) @@ -157,12 +156,10 @@ describe "Admin booths assignments" do scenario "Lists all assigned poll officers" do poll = create(:poll) booth = create(:poll_booth) - booth_assignment = create(:poll_booth_assignment, poll: poll, booth: booth) - officer_assignment = create(:poll_officer_assignment, booth_assignment: booth_assignment) + officer_assignment = create(:poll_officer_assignment, poll: poll, booth: booth) officer = officer_assignment.officer - booth_assignment_2 = create(:poll_booth_assignment, poll: poll) - officer_assignment_2 = create(:poll_officer_assignment, booth_assignment: booth_assignment_2) + officer_assignment_2 = create(:poll_officer_assignment, poll: poll) officer_2 = officer_assignment_2.officer visit admin_poll_path(poll) diff --git a/spec/features/admin/poll/officer_assignments_spec.rb b/spec/features/admin/poll/officer_assignments_spec.rb index 2f04ab607..d54ec0cac 100644 --- a/spec/features/admin/poll/officer_assignments_spec.rb +++ b/spec/features/admin/poll/officer_assignments_spec.rb @@ -9,17 +9,13 @@ describe "Officer Assignments" do scenario "Index" do poll = create(:poll) - booth = create(:poll_booth) officer1 = create(:poll_officer) officer2 = create(:poll_officer) officer3 = create(:poll_officer) - booth_assignment = create(:poll_booth_assignment, poll: poll, booth: booth) - officer_assignment = create(:poll_officer_assignment, booth_assignment: booth_assignment, officer: officer1) - - booth_assignment_2 = create(:poll_booth_assignment, poll: poll) - officer_assignment_2 = create(:poll_officer_assignment, booth_assignment: booth_assignment_2, officer: officer2) + officer_assignment = create(:poll_officer_assignment, poll: poll, officer: officer1) + officer_assignment_2 = create(:poll_officer_assignment, poll: poll, officer: officer2) visit admin_poll_path(poll) @@ -34,7 +30,6 @@ describe "Officer Assignments" do scenario "Search", :js do poll = create(:poll) - booth = create(:poll_booth) user1 = create(:user, username: "John Snow") user2 = create(:user, username: "John Silver") @@ -44,11 +39,8 @@ describe "Officer Assignments" do officer2 = create(:poll_officer, user: user2) officer3 = create(:poll_officer, user: user3) - booth_assignment = create(:poll_booth_assignment, poll: poll, booth: booth) - officer_assignment = create(:poll_officer_assignment, booth_assignment: booth_assignment, officer: officer1) - - booth_assignment_2 = create(:poll_booth_assignment, poll: poll) - officer_assignment_2 = create(:poll_officer_assignment, booth_assignment: booth_assignment_2, officer: officer2) + officer_assignment = create(:poll_officer_assignment, poll: poll, officer: officer1) + officer_assignment_2 = create(:poll_officer_assignment, poll: poll, officer: officer2) visit admin_poll_path(poll) diff --git a/spec/features/budget_polls/voter_spec.rb b/spec/features/budget_polls/voter_spec.rb index a36ad1e3f..bf572def8 100644 --- a/spec/features/budget_polls/voter_spec.rb +++ b/spec/features/budget_polls/voter_spec.rb @@ -11,8 +11,7 @@ describe "BudgetPolls", :with_frozen_time do before do create(:poll_shift, officer: officer, booth: booth, date: Date.current, task: :vote_collection) - booth_assignment = create(:poll_booth_assignment, poll: poll, booth: booth) - create(:poll_officer_assignment, officer: officer, booth_assignment: booth_assignment, date: Date.current) + create(:poll_officer_assignment, officer: officer, poll: poll, booth: booth, date: Date.current) end context "Offline" do diff --git a/spec/features/officing/booth_spec.rb b/spec/features/officing/booth_spec.rb index b26e2f0c4..a2be7997d 100644 --- a/spec/features/officing/booth_spec.rb +++ b/spec/features/officing/booth_spec.rb @@ -25,8 +25,7 @@ describe "Booth", :with_frozen_time do booth = create(:poll_booth) - booth_assignment = create(:poll_booth_assignment, poll: poll, booth: booth) - create(:poll_officer_assignment, officer: officer, booth_assignment: booth_assignment, date: Date.current) + create(:poll_officer_assignment, officer: officer, poll: poll, booth: booth, date: Date.current) login_through_form_as_officer(officer.user) @@ -42,11 +41,8 @@ describe "Booth", :with_frozen_time do booth1 = create(:poll_booth) booth2 = create(:poll_booth) - ba1 = create(:poll_booth_assignment, poll: poll, booth: booth1) - ba2 = create(:poll_booth_assignment, poll: poll, booth: booth2) - - create(:poll_officer_assignment, officer: officer, booth_assignment: ba1, date: Date.current) - create(:poll_officer_assignment, officer: officer, booth_assignment: ba2, date: Date.current) + create(:poll_officer_assignment, officer: officer, poll: poll, booth: booth1, date: Date.current) + create(:poll_officer_assignment, officer: officer, poll: poll, booth: booth2, date: Date.current) login_through_form_as_officer(officer.user) @@ -69,13 +65,9 @@ describe "Booth", :with_frozen_time do poll1 = create(:poll) poll2 = create(:poll) - ba1 = create(:poll_booth_assignment, poll: poll1, booth: booth1) - ba2 = create(:poll_booth_assignment, poll: poll2, booth: booth2) - ba3 = create(:poll_booth_assignment, poll: poll2, booth: booth2) - - create(:poll_officer_assignment, officer: officer, booth_assignment: ba1, date: Date.current) - create(:poll_officer_assignment, officer: officer, booth_assignment: ba2, date: Date.current) - create(:poll_officer_assignment, officer: officer, booth_assignment: ba3, date: Date.current) + create(:poll_officer_assignment, officer: officer, poll: poll1, booth: booth1, date: Date.current) + create(:poll_officer_assignment, officer: officer, poll: poll2, booth: booth2, date: Date.current) + create(:poll_officer_assignment, officer: officer, poll: poll2, booth: booth2, date: Date.current) login_through_form_as_officer(officer.user) diff --git a/spec/features/officing/residence_spec.rb b/spec/features/officing/residence_spec.rb index b6896cd8a..d28cf9156 100644 --- a/spec/features/officing/residence_spec.rb +++ b/spec/features/officing/residence_spec.rb @@ -97,8 +97,7 @@ describe "Residence", :with_frozen_time do booth = create(:poll_booth) poll = create(:poll) - ba = create(:poll_booth_assignment, poll: poll, booth: booth) - create(:poll_officer_assignment, officer: officer, booth_assignment: ba) + create(:poll_officer_assignment, officer: officer, poll: poll, booth: booth) create(:poll_shift, officer: officer, booth: booth, date: Date.current) login_as(officer.user) diff --git a/spec/features/officing/voters_spec.rb b/spec/features/officing/voters_spec.rb index b2660b543..647fc6db0 100644 --- a/spec/features/officing/voters_spec.rb +++ b/spec/features/officing/voters_spec.rb @@ -10,8 +10,7 @@ describe "Voters" do login_as(officer.user) create(:geozone, :in_census) create(:poll_shift, officer: officer, booth: booth, date: Date.current, task: :vote_collection) - booth_assignment = create(:poll_booth_assignment, poll: poll, booth: booth) - create(:poll_officer_assignment, officer: officer, booth_assignment: booth_assignment) + create(:poll_officer_assignment, officer: officer, poll: poll, booth: booth) set_officing_booth(booth) end @@ -38,8 +37,7 @@ describe "Voters" do scenario "Cannot vote" do unvotable_poll = create(:poll, :current, geozone_restricted: true, geozones: [create(:geozone, census_code: "02")]) - booth_assignment = create(:poll_booth_assignment, poll: unvotable_poll, booth: booth) - officer_assignment = create(:poll_officer_assignment, officer: officer, booth_assignment: booth_assignment) + officer_assignment = create(:poll_officer_assignment, officer: officer, poll: unvotable_poll, booth: booth) set_officing_booth(booth) visit new_officing_residence_path @@ -53,8 +51,7 @@ describe "Voters" do scenario "Already voted" do poll2 = create(:poll, :current) - booth_assignment = create(:poll_booth_assignment, poll: poll2, booth: booth) - create(:poll_officer_assignment, officer: officer, booth_assignment: booth_assignment) + create(:poll_officer_assignment, officer: officer, poll: poll2, booth: booth) user = create(:user, :level_two) voter = create(:poll_voter, poll: poll, user: user) @@ -90,8 +87,7 @@ describe "Voters" do scenario "Display current polls assigned to a booth" do poll = create(:poll, :current) - booth_assignment = create(:poll_booth_assignment, poll: poll, booth: booth) - officer_assignment = create(:poll_officer_assignment, officer: officer, booth_assignment: booth_assignment) + officer_assignment = create(:poll_officer_assignment, officer: officer, poll: poll, booth: booth) set_officing_booth(booth) visit new_officing_residence_path @@ -103,8 +99,7 @@ describe "Voters" do scenario "Display polls that the user can vote" do votable_poll = create(:poll, :current, geozone_restricted: true, geozones: [Geozone.first]) - booth_assignment = create(:poll_booth_assignment, poll: votable_poll, booth: booth) - officer_assignment = create(:poll_officer_assignment, officer: officer, booth_assignment: booth_assignment) + officer_assignment = create(:poll_officer_assignment, officer: officer, poll: votable_poll, booth: booth) set_officing_booth(booth) visit new_officing_residence_path @@ -116,8 +111,7 @@ describe "Voters" do scenario "Display polls that the user cannot vote" do unvotable_poll = create(:poll, :current, geozone_restricted: true, geozones: [create(:geozone, census_code: "02")]) - booth_assignment = create(:poll_booth_assignment, poll: unvotable_poll, booth: booth) - officer_assignment = create(:poll_officer_assignment, officer: officer, booth_assignment: booth_assignment) + officer_assignment = create(:poll_officer_assignment, officer: officer, poll: unvotable_poll, booth: booth) set_officing_booth(booth) visit new_officing_residence_path @@ -129,8 +123,7 @@ describe "Voters" do scenario "Do not display expired polls" do expired_poll = create(:poll, :expired) - booth_assignment = create(:poll_booth_assignment, poll: expired_poll, booth: booth) - officer_assignment = create(:poll_officer_assignment, officer: officer, booth_assignment: booth_assignment) + officer_assignment = create(:poll_officer_assignment, officer: officer, poll: expired_poll, booth: booth) set_officing_booth(booth) visit new_officing_residence_path @@ -147,11 +140,8 @@ describe "Voters" do booth1 = create(:poll_booth) booth2 = create(:poll_booth) - booth_assignment1 = create(:poll_booth_assignment, poll: poll1, booth: booth1) - booth_assignment2 = create(:poll_booth_assignment, poll: poll2, booth: booth2) - - officer_assignment1 = create(:poll_officer_assignment, officer: officer, booth_assignment: booth_assignment1) - officer_assignment2 = create(:poll_officer_assignment, officer: officer, booth_assignment: booth_assignment2) + officer_assignment1 = create(:poll_officer_assignment, officer: officer, poll: poll1, booth: booth1) + officer_assignment2 = create(:poll_officer_assignment, officer: officer, poll: poll2, booth: booth2) set_officing_booth(booth1) visit new_officing_residence_path diff --git a/spec/features/polls/polls_spec.rb b/spec/features/polls/polls_spec.rb index 71b332a97..f3f96b8b6 100644 --- a/spec/features/polls/polls_spec.rb +++ b/spec/features/polls/polls_spec.rb @@ -375,10 +375,8 @@ describe "Polls" do let(:officer) { create(:poll_officer) } scenario "Already voted on booth cannot vote on website", :js do - create(:poll_shift, officer: officer, booth: booth, date: Date.current, task: :vote_collection) - booth_assignment = create(:poll_booth_assignment, poll: poll, booth: booth) - create(:poll_officer_assignment, officer: officer, booth_assignment: booth_assignment, date: Date.current) + create(:poll_officer_assignment, officer: officer, poll: poll, booth: booth, date: Date.current) question = create(:poll_question, :yes_no, poll: poll) user = create(:user, :level_two, :in_census) diff --git a/spec/features/polls/voter_spec.rb b/spec/features/polls/voter_spec.rb index 391cb6489..d97a4aba1 100644 --- a/spec/features/polls/voter_spec.rb +++ b/spec/features/polls/voter_spec.rb @@ -15,8 +15,7 @@ describe "Voter" do before do create(:geozone, :in_census) create(:poll_shift, officer: officer, booth: booth, date: Date.current, task: :vote_collection) - booth_assignment = create(:poll_booth_assignment, poll: poll, booth: booth) - create(:poll_officer_assignment, officer: officer, booth_assignment: booth_assignment) + create(:poll_officer_assignment, officer: officer, poll: poll, booth: booth) end scenario "Voting via web - Standard", :js do diff --git a/spec/models/poll/officer_spec.rb b/spec/models/poll/officer_spec.rb index 85b5e482d..6d9637312 100644 --- a/spec/models/poll/officer_spec.rb +++ b/spec/models/poll/officer_spec.rb @@ -38,13 +38,9 @@ describe Poll::Officer do poll_2 = create(:poll) poll_3 = create(:poll) - booth_assignment_1a = create(:poll_booth_assignment, poll: poll_1) - booth_assignment_1b = create(:poll_booth_assignment, poll: poll_1) - booth_assignment_2 = create(:poll_booth_assignment, poll: poll_2) - - create(:poll_officer_assignment, booth_assignment: booth_assignment_1a, officer: officer, date: poll_1.starts_at) - create(:poll_officer_assignment, booth_assignment: booth_assignment_1b, officer: officer, date: poll_1.ends_at) - create(:poll_officer_assignment, booth_assignment: booth_assignment_2, officer: officer) + create(:poll_officer_assignment, poll: poll_1, officer: officer, date: poll_1.starts_at) + create(:poll_officer_assignment, poll: poll_1, officer: officer, date: poll_1.ends_at) + create(:poll_officer_assignment, poll: poll_2, officer: officer) assigned_polls = officer.voting_days_assigned_polls @@ -57,11 +53,8 @@ describe Poll::Officer do poll_1 = create(:poll) poll_2 = create(:poll) - booth_assignment_1 = create(:poll_booth_assignment, poll: poll_1) - booth_assignment_2 = create(:poll_booth_assignment, poll: poll_2) - - create(:poll_officer_assignment, booth_assignment: booth_assignment_1, officer: officer, date: poll_1.starts_at) - create(:poll_officer_assignment, booth_assignment: booth_assignment_2, officer: officer, final: true) + create(:poll_officer_assignment, poll: poll_1, officer: officer, date: poll_1.starts_at) + create(:poll_officer_assignment, poll: poll_2, officer: officer, final: true) assigned_polls = officer.voting_days_assigned_polls @@ -75,8 +68,8 @@ describe Poll::Officer do poll_2 = create(:poll, ends_at: 10.days.from_now) poll_3 = create(:poll, ends_at: 10.days.ago) - [poll_1, poll_2, poll_3].each do |p| - create(:poll_officer_assignment, officer: officer, booth_assignment: create(:poll_booth_assignment, poll: p)) + [poll_1, poll_2, poll_3].each do |poll| + create(:poll_officer_assignment, officer: officer, poll: poll) end assigned_polls = officer.voting_days_assigned_polls @@ -95,13 +88,9 @@ describe Poll::Officer do poll_2 = create(:poll) poll_3 = create(:poll) - booth_assignment_1a = create(:poll_booth_assignment, poll: poll_1) - booth_assignment_1b = create(:poll_booth_assignment, poll: poll_1) - booth_assignment_2 = create(:poll_booth_assignment, poll: poll_2) - - create(:poll_officer_assignment, booth_assignment: booth_assignment_1a, officer: officer, date: poll_1.starts_at, final: true) - create(:poll_officer_assignment, booth_assignment: booth_assignment_1b, officer: officer, date: poll_1.ends_at, final: true) - create(:poll_officer_assignment, booth_assignment: booth_assignment_2, officer: officer, final: true) + create(:poll_officer_assignment, poll: poll_1, officer: officer, date: poll_1.starts_at, final: true) + create(:poll_officer_assignment, poll: poll_1, officer: officer, date: poll_1.ends_at, final: true) + create(:poll_officer_assignment, poll: poll_2, officer: officer, final: true) assigned_polls = officer.final_days_assigned_polls @@ -114,11 +103,8 @@ describe Poll::Officer do poll_1 = create(:poll) poll_2 = create(:poll) - booth_assignment_1 = create(:poll_booth_assignment, poll: poll_1) - booth_assignment_2 = create(:poll_booth_assignment, poll: poll_2) - - create(:poll_officer_assignment, booth_assignment: booth_assignment_1, officer: officer, date: poll_1.starts_at) - create(:poll_officer_assignment, booth_assignment: booth_assignment_2, officer: officer, final: true) + create(:poll_officer_assignment, poll: poll_1, officer: officer, date: poll_1.starts_at) + create(:poll_officer_assignment, poll: poll_2, officer: officer, final: true) assigned_polls = officer.final_days_assigned_polls @@ -132,8 +118,8 @@ describe Poll::Officer do poll_2 = create(:poll, ends_at: 10.days.from_now) poll_3 = create(:poll, ends_at: 10.days.ago) - [poll_1, poll_2, poll_3].each do |p| - create(:poll_officer_assignment, officer: officer, booth_assignment: create(:poll_booth_assignment, poll: p), final: true) + [poll_1, poll_2, poll_3].each do |poll| + create(:poll_officer_assignment, officer: officer, poll: poll, final: true) end assigned_polls = officer.final_days_assigned_polls From 320b7550ed24013cd57762ca32b9d5e6a88f8288 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Mon, 23 Sep 2019 01:10:39 +0200 Subject: [PATCH 2/2] Simplify assigning poll to a booth in specs We were creating booth assignments explicitely, but we can use the `has_many :through` relationship to make the code easier to read. --- .../features/admin/poll/booth_assigments_spec.rb | 3 +-- spec/features/admin/poll/booths_spec.rb | 16 ++++------------ spec/features/admin/poll/shifts_spec.rb | 13 ++++--------- spec/features/budget_polls/ballot_sheets_spec.rb | 11 ++--------- spec/features/officing/results_spec.rb | 3 +-- spec/models/poll/booth_spec.rb | 10 ++-------- 6 files changed, 14 insertions(+), 42 deletions(-) diff --git a/spec/features/admin/poll/booth_assigments_spec.rb b/spec/features/admin/poll/booth_assigments_spec.rb index 987ba99ad..117b991a0 100644 --- a/spec/features/admin/poll/booth_assigments_spec.rb +++ b/spec/features/admin/poll/booth_assigments_spec.rb @@ -137,8 +137,7 @@ describe "Admin booths assignments" do end scenario "Cannot unassing booth if poll is expired" do - poll_expired = create(:poll, :expired) - create(:poll_booth_assignment, poll: poll_expired, booth: booth) + poll_expired = create(:poll, :expired, booths: [booth]) visit manage_admin_poll_booth_assignments_path(poll_expired) diff --git a/spec/features/admin/poll/booths_spec.rb b/spec/features/admin/poll/booths_spec.rb index e81f4e539..8480a0d9b 100644 --- a/spec/features/admin/poll/booths_spec.rb +++ b/spec/features/admin/poll/booths_spec.rb @@ -37,14 +37,8 @@ describe "Admin booths" do end scenario "Available" do - booth_for_current_poll = create(:poll_booth) - booth_for_expired_poll = create(:poll_booth) - - current_poll = create(:poll, :current) - expired_poll = create(:poll, :expired) - - create(:poll_booth_assignment, poll: current_poll, booth: booth_for_current_poll) - create(:poll_booth_assignment, poll: expired_poll, booth: booth_for_expired_poll) + booth_for_current_poll = create(:poll_booth, polls: [create(:poll, :current)]) + booth_for_expired_poll = create(:poll_booth, polls: [create(:poll, :expired)]) visit admin_root_path @@ -85,8 +79,7 @@ describe "Admin booths" do scenario "Edit" do poll = create(:poll, :current) - booth = create(:poll_booth) - assignment = create(:poll_booth_assignment, poll: poll, booth: booth) + booth = create(:poll_booth, polls: [poll]) visit admin_booths_path @@ -111,8 +104,7 @@ describe "Admin booths" do scenario "Back link go back to available list when manage shifts" do poll = create(:poll, :current) - booth = create(:poll_booth) - assignment = create(:poll_booth_assignment, poll: poll, booth: booth) + booth = create(:poll_booth, polls: [poll]) visit available_admin_booths_path diff --git a/spec/features/admin/poll/shifts_spec.rb b/spec/features/admin/poll/shifts_spec.rb index 2720bb32c..9b226b839 100644 --- a/spec/features/admin/poll/shifts_spec.rb +++ b/spec/features/admin/poll/shifts_spec.rb @@ -34,9 +34,7 @@ describe "Admin shifts" do scenario "Create Vote Collection Shift and Recount & Scrutiny Shift on same date", :js do create(:poll) poll = create(:poll, :current) - booth = create(:poll_booth) - create(:poll_booth_assignment, poll: poll, booth: booth) - create(:poll_booth_assignment, poll: create(:poll, :expired), booth: booth) + booth = create(:poll_booth, polls: [poll, create(:poll, :expired)]) officer = create(:poll_officer) vote_collection_dates = (Date.current..poll.ends_at.to_date).to_a.map { |date| I18n.l(date, format: :long) } recount_scrutiny_dates = (poll.ends_at.to_date..poll.ends_at.to_date + 1.week).to_a.map { |date| I18n.l(date, format: :long) } @@ -98,8 +96,7 @@ describe "Admin shifts" do scenario "Vote Collection Shift and Recount & Scrutiny Shift don't include already assigned dates to officer", :js do poll = create(:poll, :current) - booth = create(:poll_booth) - assignment = create(:poll_booth_assignment, poll: poll, booth: booth) + booth = create(:poll_booth, polls: [poll]) officer = create(:poll_officer) shift1 = create(:poll_shift, :vote_collection_task, officer: officer, booth: booth, date: Date.current) @@ -149,8 +146,7 @@ describe "Admin shifts" do scenario "Error on create", :js do poll = create(:poll, :current) - booth = create(:poll_booth) - assignment = create(:poll_booth_assignment, poll: poll, booth: booth) + booth = create(:poll_booth, polls: [poll]) officer = create(:poll_officer) visit available_admin_booths_path @@ -171,8 +167,7 @@ describe "Admin shifts" do scenario "Destroy" do poll = create(:poll, :current) - booth = create(:poll_booth) - assignment = create(:poll_booth_assignment, poll: poll, booth: booth) + booth = create(:poll_booth, polls: [poll]) officer = create(:poll_officer) shift = create(:poll_shift, officer: officer, booth: booth) diff --git a/spec/features/budget_polls/ballot_sheets_spec.rb b/spec/features/budget_polls/ballot_sheets_spec.rb index 532b29035..ee8c70f32 100644 --- a/spec/features/budget_polls/ballot_sheets_spec.rb +++ b/spec/features/budget_polls/ballot_sheets_spec.rb @@ -2,13 +2,12 @@ require "rails_helper" describe "Poll budget ballot sheets" do let(:poll) { create(:poll, :for_budget, ends_at: 1.day.ago) } - let(:booth) { create(:poll_booth) } + let(:booth) { create(:poll_booth, polls: [poll]) } let(:poll_officer) { create(:poll_officer) } context "Officing recounts and results view" do before do - create(:poll_booth_assignment, poll: poll, booth: booth) create(:poll_shift, :recount_scrutiny_task, officer: poll_officer, booth: booth, date: Date.current) create(:poll_officer_assignment, officer: poll_officer) @@ -44,7 +43,6 @@ describe "Poll budget ballot sheets" do end scenario "Access ballot sheets officing with one booth assignment" do - create(:poll_booth_assignment, poll: poll, booth: booth) create(:poll_shift, :recount_scrutiny_task, officer: poll_officer, booth: booth, date: Date.current) create(:poll_officer_assignment, officer: poll_officer) @@ -58,9 +56,7 @@ describe "Poll budget ballot sheets" do end scenario "Access ballot sheets officing with multiple booth assignments", :with_frozen_time do - booth_2 = create(:poll_booth) - create(:poll_booth_assignment, poll: poll, booth: booth) - create(:poll_booth_assignment, poll: poll, booth: booth_2) + booth_2 = create(:poll_booth, polls: [poll]) create(:poll_shift, :recount_scrutiny_task, officer: poll_officer, booth: booth, date: Date.current) create(:poll_shift, :recount_scrutiny_task, officer: poll_officer, booth: booth_2, @@ -80,7 +76,6 @@ describe "Poll budget ballot sheets" do context "Index" do before do - create(:poll_booth_assignment, poll: poll, booth: booth) create(:poll_shift, :recount_scrutiny_task, officer: poll_officer, booth: booth, date: Date.current) @@ -102,7 +97,6 @@ describe "Poll budget ballot sheets" do context "New" do before do - create(:poll_booth_assignment, poll: poll, booth: booth) create(:poll_shift, :recount_scrutiny_task, officer: poll_officer, booth: booth, date: Date.current) create(:poll_officer_assignment, officer: poll_officer) @@ -150,7 +144,6 @@ describe "Poll budget ballot sheets" do context "Show" do before do - create(:poll_booth_assignment, poll: poll, booth: booth) create(:poll_shift, :recount_scrutiny_task, officer: poll_officer, booth: booth, date: Date.current) diff --git a/spec/features/officing/results_spec.rb b/spec/features/officing/results_spec.rb index 75644fbfe..222562e2f 100644 --- a/spec/features/officing/results_spec.rb +++ b/spec/features/officing/results_spec.rb @@ -2,11 +2,10 @@ require "rails_helper" describe "Officing Results", :with_frozen_time do let(:poll) { create(:poll, ends_at: 1.day.ago) } - let(:booth) { create(:poll_booth) } + let(:booth) { create(:poll_booth, polls: [poll]) } let(:poll_officer) { create(:poll_officer) } before do - create(:poll_booth_assignment, poll: poll, booth: booth) create(:poll_shift, :recount_scrutiny_task, officer: poll_officer, booth: booth, date: Date.current) @question_1 = create(:poll_question, poll: poll) create(:poll_question_answer, title: "Yes", question: @question_1, given_order: 1) diff --git a/spec/models/poll/booth_spec.rb b/spec/models/poll/booth_spec.rb index 309963972..19dc8e05d 100644 --- a/spec/models/poll/booth_spec.rb +++ b/spec/models/poll/booth_spec.rb @@ -27,14 +27,8 @@ describe Poll::Booth do describe ".available" do it "returns booths associated to current polls" do - booth_for_current_poll = create(:poll_booth) - booth_for_expired_poll = create(:poll_booth) - - current_poll = create(:poll, :current) - expired_poll = create(:poll, :expired) - - create(:poll_booth_assignment, poll: current_poll, booth: booth_for_current_poll) - create(:poll_booth_assignment, poll: expired_poll, booth: booth_for_expired_poll) + booth_for_current_poll = create(:poll_booth, polls: [create(:poll, :current)]) + booth_for_expired_poll = create(:poll_booth, polls: [create(:poll, :expired)]) expect(Poll::Booth.available).to include(booth_for_current_poll) expect(Poll::Booth.available).not_to include(booth_for_expired_poll)