diff --git a/spec/fixtures/forms/2021_2022.json b/spec/fixtures/forms/2021_2022.json index ec13bdabb..97999d8a3 100644 --- a/spec/fixtures/forms/2021_2022.json +++ b/spec/fixtures/forms/2021_2022.json @@ -879,23 +879,26 @@ "4": { "value": "Every calendar month" }, - "5": { - "value": "Weekly for 50 weeks" + "9": { + "value": "Weekly for 46 weeks" }, - "6": { - "value": "Weekly for 49 weeks" + "8": { + "value": "Weekly for 47 weeks" }, "7": { "value": "Weekly for 48 weeks" }, - "8": { - "value": "Weekly for 47 weeks" + "6": { + "value": "Weekly for 49 weeks" }, - "9": { - "value": "Weekly for 46 weeks" + "5": { + "value": "Weekly for 50 weeks" }, "1": { "value": "Weekly for 52 weeks" + }, + "10": { + "value": "Weekly for 53 weeks" } } }, diff --git a/spec/models/lettings_log_spec.rb b/spec/models/lettings_log_spec.rb index 2358317af..39bf22403 100644 --- a/spec/models/lettings_log_spec.rb +++ b/spec/models/lettings_log_spec.rb @@ -1084,6 +1084,87 @@ RSpec.describe LettingsLog do expect(record_from_db["wtcharge"]).to eq(187.2) end end + + context "when rent is paid weekly for 52 weeks", focus: true do + it "correctly derives and saves weekly rent" do + lettings_log.update!(brent: 130, period: 10) + record_from_db = ActiveRecord::Base.connection.execute("select wrent from lettings_logs where id=#{lettings_log.id}").to_a[0] + expect(lettings_log.wrent).to eq(132.5) + expect(record_from_db["wrent"]).to eq(132.5) + end + + it "correctly derives and saves weekly service charge" do + lettings_log.update!(scharge: 30, period: 10) + record_from_db = ActiveRecord::Base.connection.execute("select wscharge from lettings_logs where id=#{lettings_log.id}").to_a[0] + expect(lettings_log.wscharge).to eq(30.58) + expect(record_from_db["wscharge"]).to eq(30.58) + end + + it "correctly derives and saves weekly personal service charge" do + lettings_log.update!(pscharge: 30, period: 10) + record_from_db = ActiveRecord::Base.connection.execute("select wpschrge from lettings_logs where id=#{lettings_log.id}").to_a[0] + expect(lettings_log.wpschrge).to eq(30.58) + expect(record_from_db["wpschrge"]).to eq(30.58) + end + + it "correctly derives and saves weekly support charge" do + lettings_log.update!(supcharg: 30, period: 10) + record_from_db = ActiveRecord::Base.connection.execute("select wsupchrg from lettings_logs where id=#{lettings_log.id}").to_a[0] + expect(lettings_log.wsupchrg).to eq(30.58) + expect(record_from_db["wsupchrg"]).to eq(30.58) + end + + it "correctly derives and saves weekly total charge" do + lettings_log.update!(tcharge: 30, period: 10) + record_from_db = ActiveRecord::Base.connection.execute("select wtcharge from lettings_logs where id=#{lettings_log.id}").to_a[0] + expect(lettings_log.wtcharge).to eq(30.58) + expect(record_from_db["wtcharge"]).to eq(30.58) + end + + context "when the tenant has an outstanding amount after benefits" do + context "when tenant is in receipt of housing benefit" do + it "correctly derives and saves weekly total shortfall" do + lettings_log.update!(hbrentshortfall: 1, tshortfall: 130, period: 10, hb: 1) + record_from_db = ActiveRecord::Base.connection.execute("select wtshortfall from lettings_logs where id=#{lettings_log.id}").to_a[0] + expect(lettings_log.wtshortfall).to eq(132.5) + expect(record_from_db["wtshortfall"]).to eq(132.5) + end + end + + context "when tenant is in receipt of universal credit with housing element exc. housing benefit" do + it "correctly derives and saves weekly total shortfall" do + lettings_log.update!(hbrentshortfall: 1, tshortfall: 130, period: 10, hb: 6) + record_from_db = ActiveRecord::Base.connection.execute("select wtshortfall from lettings_logs where id=#{lettings_log.id}").to_a[0] + expect(lettings_log.wtshortfall).to eq(132.5) + expect(record_from_db["wtshortfall"]).to eq(132.5) + end + end + + context "when tenant is in receipt of housing benefit and universal credit" do + it "correctly derives and saves weekly total shortfall" do + lettings_log.update!(hbrentshortfall: 1, tshortfall: 130, period: 10, hb: 8) + record_from_db = ActiveRecord::Base.connection.execute("select wtshortfall from lettings_logs where id=#{lettings_log.id}").to_a[0] + expect(lettings_log.wtshortfall).to eq(132.5) + expect(record_from_db["wtshortfall"]).to eq(132.5) + end + end + end + + it "correctly derives floats" do + lettings_log.update!(supcharg: 30.12, pscharge: 25.13, scharge: 30.98, brent: 100.97, period: 10) + record_from_db = ActiveRecord::Base.connection.execute("select wtcharge, wsupchrg, wpschrge, wscharge, wrent from lettings_logs where id=#{lettings_log.id}").to_a[0] + expect(lettings_log.wsupchrg).to eq(30.7) + expect(lettings_log.wpschrge).to eq(25.61) + expect(lettings_log.wscharge).to eq(31.58) + expect(lettings_log.wrent).to eq(102.91) + expect(lettings_log.wtcharge).to eq(190.8) + expect(record_from_db["wsupchrg"]).to eq(30.7) + expect(record_from_db["wpschrge"]).to eq(25.61) + expect(record_from_db["wscharge"]).to eq(31.58) + expect(record_from_db["wrent"]).to eq(102.91) + expect(record_from_db["wtcharge"]).to eq(190.8) + end + end end context "when the owning organisation is a LA" do