From e928eb38acd093dead71fb1401a109daa37fdd0c Mon Sep 17 00:00:00 2001 From: Bertocq Date: Wed, 4 Oct 2017 00:39:31 +0200 Subject: [PATCH 1/2] Add Officer relationship to Poll Voter --- app/controllers/officing/voters_controller.rb | 3 ++- app/models/poll/voter.rb | 1 + db/migrate/20171003223152_add_officer_to_poll_voter.rb | 5 +++++ db/schema.rb | 3 ++- spec/factories.rb | 1 + 5 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 db/migrate/20171003223152_add_officer_to_poll_voter.rb diff --git a/app/controllers/officing/voters_controller.rb b/app/controllers/officing/voters_controller.rb index a5343f83d..2c3867416 100644 --- a/app/controllers/officing/voters_controller.rb +++ b/app/controllers/officing/voters_controller.rb @@ -13,7 +13,8 @@ class Officing::VotersController < Officing::BaseController document_number: @user.document_number, user: @user, poll: @poll, - origin: "booth") + origin: "booth", + officer: current_user.poll_officer) @voter.save! end diff --git a/app/models/poll/voter.rb b/app/models/poll/voter.rb index abcae7d25..bc0118a88 100644 --- a/app/models/poll/voter.rb +++ b/app/models/poll/voter.rb @@ -8,6 +8,7 @@ class Poll belongs_to :geozone belongs_to :booth_assignment belongs_to :officer_assignment + belongs_to :officer validates :poll_id, presence: true validates :user_id, presence: true diff --git a/db/migrate/20171003223152_add_officer_to_poll_voter.rb b/db/migrate/20171003223152_add_officer_to_poll_voter.rb new file mode 100644 index 000000000..99f9cd3e3 --- /dev/null +++ b/db/migrate/20171003223152_add_officer_to_poll_voter.rb @@ -0,0 +1,5 @@ +class AddOfficerToPollVoter < ActiveRecord::Migration + def change + add_column :poll_voters, :officer_id, :integer + end +end diff --git a/db/schema.rb b/db/schema.rb index 9a6fe919d..a53b0c490 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20171003212958) do +ActiveRecord::Schema.define(version: 20171003223152) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -752,6 +752,7 @@ ActiveRecord::Schema.define(version: 20171003212958) do t.integer "officer_assignment_id" t.integer "user_id" t.string "origin" + t.integer "officer_id" end add_index "poll_voters", ["booth_assignment_id"], name: "index_poll_voters_on_booth_assignment_id", using: :btree diff --git a/spec/factories.rb b/spec/factories.rb index c21c35b4e..a127d1bc9 100644 --- a/spec/factories.rb +++ b/spec/factories.rb @@ -531,6 +531,7 @@ FactoryGirl.define do factory :poll_voter, class: 'Poll::Voter' do poll association :user, :level_two + association :officer, factory: :poll_officer origin "web" trait :from_booth do From 85087b0bea5b457cdbcb3a8d3ed94fa39f20f20d Mon Sep 17 00:00:00 2001 From: Bertocq Date: Wed, 4 Oct 2017 01:08:33 +0200 Subject: [PATCH 2/2] Check officer value for Poll Voter created from officing panel --- spec/features/officing/voters_spec.rb | 2 ++ spec/models/poll/answer_spec.rb | 1 + 2 files changed, 3 insertions(+) diff --git a/spec/features/officing/voters_spec.rb b/spec/features/officing/voters_spec.rb index 0a23a6a27..b4127b5b8 100644 --- a/spec/features/officing/voters_spec.rb +++ b/spec/features/officing/voters_spec.rb @@ -26,6 +26,8 @@ feature 'Voters' do page.evaluate_script("window.location.reload()") expect(page).to have_content "Has already participated in this poll" expect(page).to_not have_button "Confirm vote" + + expect(Poll::Voter.last.officer_id).to eq(officer.id) end scenario "Already voted", :js do diff --git a/spec/models/poll/answer_spec.rb b/spec/models/poll/answer_spec.rb index d66cdc18c..d245af8d4 100644 --- a/spec/models/poll/answer_spec.rb +++ b/spec/models/poll/answer_spec.rb @@ -51,6 +51,7 @@ describe Poll::Answer do expect(voter.document_number).to eq(answer.author.document_number) expect(voter.poll_id).to eq(answer.poll.id) + expect(voter.officer_id).to eq(nil) end it "updates a poll_voter with user and poll data" do