From 8b56403bb19842b935ca35c4c6a519d198b553d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juanjo=20Baza=CC=81n?= Date: Tue, 3 Jan 2017 21:35:04 +0100 Subject: [PATCH] adds validations and info logging to Recount --- app/models/poll/recount.rb | 13 +++++++++---- spec/models/poll/recount_spec.rb | 20 ++++++++++++++++++++ 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/app/models/poll/recount.rb b/app/models/poll/recount.rb index 63745b504..b4e28583e 100644 --- a/app/models/poll/recount.rb +++ b/app/models/poll/recount.rb @@ -3,13 +3,18 @@ class Poll belongs_to :booth_assignment, class_name: "Poll::BoothAssignment" belongs_to :officer_assignment, class_name: "Poll::OfficerAssignment" + validates :booth_assignment_id, presence: true + validates :date, presence: true, uniqueness: {scope: :booth_assignment_id} validates :officer_assignment_id, presence: true, uniqueness: {scope: :booth_assignment_id} - validates :count, presence: true + validates :count, presence: true, numericality: {only_integer: true} - before_save :update_count_log + before_save :update_logs - def update_count_log - self.count_log += ":#{self.count_was.to_s}" if self.count_changed? && self.count_was.present? + def update_logs + if self.count_changed? && self.count_was.present? + self.count_log += ":#{self.count_was.to_s}" + self.officer_assignment_id_log += ":#{self.officer_assignment_id_was.to_s}" + end end end end \ No newline at end of file diff --git a/spec/models/poll/recount_spec.rb b/spec/models/poll/recount_spec.rb index 1fe11f7fa..2d6bf5336 100644 --- a/spec/models/poll/recount_spec.rb +++ b/spec/models/poll/recount_spec.rb @@ -17,4 +17,24 @@ describe :recount do expect(recount.count_log).to eq(":33:32") end + it "should update officer_assignment_id_log if count changes" do + recount = create(:poll_recount, count: 33) + + expect(recount.count_log).to eq("") + + recount.count = 33 + recount.officer_assignment_id = 1 + recount.save + + recount.count = 32 + recount.officer_assignment_id = 2 + recount.save + + recount.count = 34 + recount.officer_assignment_id = 3 + recount.save + + expect(recount.officer_assignment_id_log).to eq(":1:2") + end + end \ No newline at end of file