From 73a19a440b96bd8d4b43baf3ddc86d8c67bd384e Mon Sep 17 00:00:00 2001 From: Arthur Campbell Date: Fri, 24 Mar 2023 13:30:33 +0000 Subject: [PATCH] write tests that invalid answers are cleared when the start date of a log is changed --- spec/factories/lettings_log.rb | 3 +++ spec/factories/sales_log.rb | 3 +++ spec/models/lettings_log_spec.rb | 34 ++++++++++++++++++++++++++++++ spec/models/sales_log_spec.rb | 36 ++++++++++++++++++++++++++++++++ 4 files changed, 76 insertions(+) diff --git a/spec/factories/lettings_log.rb b/spec/factories/lettings_log.rb index 311e5fecc..ef681bd6b 100644 --- a/spec/factories/lettings_log.rb +++ b/spec/factories/lettings_log.rb @@ -158,6 +158,9 @@ FactoryBot.define do sheltered { 0 } household_charge { 0 } end + trait :sheltered_housing do + needstype { 2 } + end created_at { Time.zone.today } updated_at { Time.zone.today } end diff --git a/spec/factories/sales_log.rb b/spec/factories/sales_log.rb index 4bea77a65..104694d2a 100644 --- a/spec/factories/sales_log.rb +++ b/spec/factories/sales_log.rb @@ -10,6 +10,9 @@ FactoryBot.define do type { 8 } saledate { Time.utc(2023, 2, 2, 10, 36, 49) } end + trait :shared_ownership do + ownershipsch { 1 } + end trait :completed do ownershipsch { 2 } type { 8 } diff --git a/spec/models/lettings_log_spec.rb b/spec/models/lettings_log_spec.rb index fb0f01be2..2941a8ccc 100644 --- a/spec/models/lettings_log_spec.rb +++ b/spec/models/lettings_log_spec.rb @@ -2620,6 +2620,40 @@ RSpec.describe LettingsLog do end end end + + context "when the collection year is changed" do + around do |example| + Timecop.freeze(now) do + Singleton.__init__(FormHandler) + FormHandler.instance.use_real_forms! + example.run + end + Timecop.return + end + + let(:lettings_log) { FactoryBot.create(:lettings_log, :about_completed, :sheltered_housing, startdate: now, sheltered:) } + let(:now) { Time.zone.local(2023, 6, 1) } + + context "and selected answer options are no longer valid" do + let(:sheltered) { 5 } + + it "clears those values" do + expect(lettings_log.sheltered).to be 5 + lettings_log.update!(startdate: Time.zone.local(2023, 1, 1)) + expect(lettings_log.sheltered).to be nil + end + end + + context "and selected answer options are still valid" do + let(:sheltered) { 2 } + + it "does not clear those values" do + expect(lettings_log.sheltered).to be 2 + lettings_log.update!(startdate: Time.zone.local(2023, 1, 1)) + expect(lettings_log.sheltered).to be 2 + end + end + end end describe "tshortfall_unknown?" do diff --git a/spec/models/sales_log_spec.rb b/spec/models/sales_log_spec.rb index c008269ea..174de5795 100644 --- a/spec/models/sales_log_spec.rb +++ b/spec/models/sales_log_spec.rb @@ -222,6 +222,42 @@ RSpec.describe SalesLog, type: :model do end end + describe "resetting invalidated fields" do + context "when the collection year is changed" do + around do |example| + Timecop.freeze(now) do + Singleton.__init__(FormHandler) + FormHandler.instance.use_real_forms! + example.run + end + Timecop.return + end + + let(:sales_log) { FactoryBot.create(:sales_log, :shared_ownership, saledate: now, type:) } + let(:now) { Time.zone.local(2023, 6, 1) } + + context "and selected answer options are no longer valid" do + let(:type) { 32 } + + it "clears those values" do + expect(sales_log.type).to be 32 + sales_log.update!(saledate: Time.zone.local(2023, 1, 1)) + expect(sales_log.type).to be nil + end + end + + context "and selected answer options are still valid" do + let(:type) { 24 } + + it "does not clear those values" do + expect(sales_log.type).to be 24 + sales_log.update!(saledate: Time.zone.local(2023, 1, 1)) + expect(sales_log.type).to be 24 + end + end + end + end + context "when saving addresses" do before do stub_request(:get, /api.postcodes.io/)