Browse Source

write tests that invalid answers are cleared when the start date of a log is changed

pull/1469/head
Arthur Campbell 3 years ago
parent
commit
73a19a440b
  1. 3
      spec/factories/lettings_log.rb
  2. 3
      spec/factories/sales_log.rb
  3. 34
      spec/models/lettings_log_spec.rb
  4. 36
      spec/models/sales_log_spec.rb

3
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

3
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 }

34
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

36
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/)

Loading…
Cancel
Save