From cb318b112f62b0dd09118fbd400981b13132e05c Mon Sep 17 00:00:00 2001 From: Manny Dinssa <44172848+Dinssa@users.noreply.github.com> Date: Thu, 21 Nov 2024 13:18:10 +0000 Subject: [PATCH] Add tests --- spec/models/sales_log_spec.rb | 49 +++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/spec/models/sales_log_spec.rb b/spec/models/sales_log_spec.rb index ae9b00d4c..1bd091f43 100644 --- a/spec/models/sales_log_spec.rb +++ b/spec/models/sales_log_spec.rb @@ -978,5 +978,54 @@ RSpec.describe SalesLog, type: :model do end end end + + describe "#child_under_16_constraints!" do + let(:sales_log) { create(:sales_log, saledate: Time.zone.local(2024, 4, 1)) } + + it "sets ecstat2 to 9 when age2 is under 16" do + sales_log.age2 = 14 + sales_log.set_derived_fields! + expect(sales_log.ecstat2).to eq(9) + end + + it "does not clear ecstat2 if it is not 9" do + sales_log.age2 = 22 + sales_log.ecstat2 = 3 + sales_log.set_derived_fields! + expect(sales_log.ecstat2).to eq(3) + end + + it "clears ecstat3 if it is 9 and age3 is not under 16" do + sales_log.age3 = 22 + sales_log.ecstat3 = 9 + sales_log.set_derived_fields! + expect(sales_log.ecstat3).to be_nil + end + + it "does not clear ecstat3 if it is not 9" do + sales_log.age3 = 22 + sales_log.ecstat3 = 8 + sales_log.set_derived_fields! + expect(sales_log.ecstat3).to eq(8) + end + + context "when a user changes their answer" do + before do + sales_log.age2 = 14 + sales_log.ecstat2 = 9 + end + + it "clears the working situation only when no longer a child under 16 and retains the new value" do + sales_log.set_derived_fields! + expect(sales_log.ecstat2).to eq(9) + sales_log.age2 = 22 + sales_log.set_derived_fields! + expect(sales_log.ecstat2).to be_nil + sales_log.ecstat2 = 4 + sales_log.set_derived_fields! + expect(sales_log.ecstat2).to eq(4) + end + end + end end # rubocop:enable RSpec/MessageChain