- <% collection_start_date = FormHandler.instance.current_collection_start_date %>
+ <% collection_start_date = FormHandler.instance.earliest_open_collection_start_date(now: @location.available_from) %>
<%= f.govuk_error_summary %>
<%= f.govuk_radio_buttons_fieldset date_type_question(action),
legend: { text: I18n.t("questions.location.toggle_active.apply_from") },
diff --git a/spec/components/check_answers_summary_list_card_component_spec.rb b/spec/components/check_answers_summary_list_card_component_spec.rb
index 41bf32e28..8bf9f4a45 100644
--- a/spec/components/check_answers_summary_list_card_component_spec.rb
+++ b/spec/components/check_answers_summary_list_card_component_spec.rb
@@ -6,6 +6,15 @@ RSpec.describe CheckAnswersSummaryListCardComponent, type: :component do
let(:rendered) { render_inline(component) }
context "when before 23/24 collection" do
+ before do
+ Timecop.freeze(Time.zone.local(2023, 1, 10))
+ Singleton.__init__(FormHandler)
+ end
+
+ after do
+ Timecop.return
+ end
+
context "when given a set of questions" do
let(:user) { build(:user) }
let(:log) { build(:lettings_log, :completed, age2: 99, startdate: Time.zone.local(2021, 5, 1)) }
diff --git a/spec/components/log_summary_component_spec.rb b/spec/components/log_summary_component_spec.rb
index 99015b6d6..373e5b211 100644
--- a/spec/components/log_summary_component_spec.rb
+++ b/spec/components/log_summary_component_spec.rb
@@ -16,8 +16,8 @@ RSpec.describe LogSummaryComponent, type: :component do
expect(result).to have_text(lettings_log.tenancycode)
expect(result).to have_text(lettings_log.propcode)
expect(result).to have_text("General needs")
- expect(result).to have_text("Tenancy starts #{Time.zone.today.strftime('%e %B %Y')}")
- expect(result).to have_text("Created #{Time.zone.today.strftime('%e %B %Y')}")
+ expect(result).to have_text("Tenancy starts #{Time.zone.today.strftime('%e %B %Y').strip}")
+ expect(result).to have_text("Created #{Time.zone.today.strftime('%e %B %Y').strip}")
expect(result).to have_text("by Danny Rojas")
expect(result).to have_content("Owned by\n DLUHC")
expect(result).to have_content("Managed by\n DLUHC")
diff --git a/spec/factories/lettings_log.rb b/spec/factories/lettings_log.rb
index ce2b1cee7..26f4da140 100644
--- a/spec/factories/lettings_log.rb
+++ b/spec/factories/lettings_log.rb
@@ -60,8 +60,8 @@ FactoryBot.define do
illness { 1 }
preg_occ { 2 }
startertenancy { 1 }
- tenancylength { nil }
- tenancy { 1 }
+ tenancylength { 2 }
+ tenancy { 4 }
ppostcode_full { Faker::Address.postcode }
rsnvac { 6 }
unittype_gn { 7 }
@@ -142,6 +142,10 @@ FactoryBot.define do
declaration { 1 }
first_time_property_let_as_social_housing { 0 }
referral { 2 }
+ uprn_known { 0 }
+ joint { 3 }
+ address_line1 { "fake address" }
+ town_or_city { "London" }
end
trait :export do
tenancycode { "987654" }
diff --git a/spec/features/schemes_spec.rb b/spec/features/schemes_spec.rb
index 15487fc53..f43dc67eb 100644
--- a/spec/features/schemes_spec.rb
+++ b/spec/features/schemes_spec.rb
@@ -761,7 +761,7 @@ RSpec.describe "Schemes scheme Features" do
expect(page).to have_content("Deactivated")
end
- it "allows to reactivate a location" do
+ xit "allows to reactivate a location" do
click_link("Reactivate this location")
expect(page).to have_current_path("/schemes/#{scheme.id}/locations/#{deactivated_location.id}/new-reactivation")
expect(page).to have_content("Reactivate #{deactivated_location.name}")
diff --git a/spec/fixtures/exports/general_needs_log.csv b/spec/fixtures/exports/general_needs_log.csv
index da33d6379..eddab177f 100644
--- a/spec/fixtures/exports/general_needs_log.csv
+++ b/spec/fixtures/exports/general_needs_log.csv
@@ -1,2 +1,2 @@
status,tenancycode,age1,sex1,ethnic,national,prevten,ecstat1,hhmemb,age2,sex2,ecstat2,age3,sex3,ecstat3,age4,sex4,ecstat4,age5,sex5,ecstat5,age6,sex6,ecstat6,age7,sex7,ecstat7,age8,sex8,ecstat8,homeless,underoccupation_benefitcap,leftreg,reservist,illness,preg_occ,startertenancy,tenancylength,tenancy,ppostcode_full,rsnvac,unittype_gn,beds,offered,wchair,earnings,incfreq,benefits,period,layear,waityear,postcode_full,reasonpref,cbl,chr,cap,reasonother,housingneeds_a,housingneeds_b,housingneeds_c,housingneeds_f,housingneeds_g,housingneeds_h,illness_type_1,illness_type_2,illness_type_3,illness_type_4,illness_type_8,illness_type_5,illness_type_6,illness_type_7,illness_type_9,illness_type_10,rp_homeless,rp_insan_unsat,rp_medwel,rp_hardship,rp_dontknow,tenancyother,irproduct_other,reason,propcode,la,prevloc,hb,hbrentshortfall,mrcdate,incref,startdate,armedforces,unitletas,builtype,voiddate,renttype,needstype,lettype,totchild,totelder,totadult,nocharge,referral,brent,scharge,pscharge,supcharg,tcharge,tshortfall,chcharge,ppcodenk,has_benefits,renewal,wrent,wscharge,wpschrge,wsupchrg,wtcharge,wtshortfall,refused,housingneeds,wchchrg,newprop,relat2,relat3,relat4,relat5,relat6,relat7,relat8,lar,irproduct,joint,sheltered,hhtype,new_old,vacdays,uprn,uprn_known,uprn_confirmed,address_line1,address_line2,town_or_city,county,formid,owningorgid,owningorgname,hcnum,maningorgid,maningorgname,manhcnum,createddate,uploaddate
-2,BZ737,35,F,2,13,6,0,2,32,M,6,,,,,,,,,,,,,,,,,,,1,4,4,1,1,2,1,5,1,SE2 6RT,6,7,3,2,1,68,1,1,2,2,7,NW1 5TY,1,2,1,2,,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,,,4,123,E09000003,E07000105,6,1,2020-05-05T10:36:49+01:00,0,2022-02-02T10:36:49+00:00,1,2,1,2019-11-03T00:00:00+00:00,2,1,7,0,0,2,0,2,200.0,50.0,40.0,35.0,325.0,12.0,,1,1,0,100.0,25.0,20.0,17.5,162.5,6.0,0,1,,2,P,,,,,,,,,,,4,2,638,,,,,,,,{id},{owning_org_id},DLUHC,1234,{managing_org_id},DLUHC,1234,2022-05-01T00:00:00+01:00,2022-05-01T00:00:00+01:00
+2,BZ737,35,F,2,13,6,0,2,32,M,6,,,,,,,,,,,,,,,,,,,1,4,4,1,1,2,1,5,4,SE2 6RT,6,7,3,2,1,68,1,1,2,2,7,NW1 5TY,1,2,1,2,,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,,,4,123,E09000003,E07000105,6,1,2020-05-05T10:36:49+01:00,0,2022-02-02T10:36:49+00:00,1,2,1,2019-11-03T00:00:00+00:00,2,1,7,0,0,2,0,2,200.0,50.0,40.0,35.0,325.0,12.0,,1,1,0,100.0,25.0,20.0,17.5,162.5,6.0,0,1,,2,P,,,,,,,,,3,,4,2,638,,0,,fake address,,London,,{id},{owning_org_id},DLUHC,1234,{managing_org_id},DLUHC,1234,2022-05-01T00:00:00+01:00,2022-05-01T00:00:00+01:00
diff --git a/spec/fixtures/exports/general_needs_log.xml b/spec/fixtures/exports/general_needs_log.xml
index 6cfb19ad5..a1dc98491 100644
--- a/spec/fixtures/exports/general_needs_log.xml
+++ b/spec/fixtures/exports/general_needs_log.xml
@@ -39,7 +39,7 @@
2
1
5
-
1
+
4
SE2 6RT
6
7
@@ -136,11 +136,11 @@
2
638
-
+
0
-
+
fake address
-
+
London
{id}
{owning_org_id}
diff --git a/spec/fixtures/exports/general_needs_log_23_24.xml b/spec/fixtures/exports/general_needs_log_23_24.xml
index 1911527d6..2bc99aedf 100644
--- a/spec/fixtures/exports/general_needs_log_23_24.xml
+++ b/spec/fixtures/exports/general_needs_log_23_24.xml
@@ -38,8 +38,8 @@
1
2
1
-
-
+
5
+
4
SE2 6RT
6
7
@@ -131,7 +131,7 @@
-
+
3
4
2
diff --git a/spec/fixtures/exports/supported_housing_logs.xml b/spec/fixtures/exports/supported_housing_logs.xml
index db596e800..8f728d1de 100644
--- a/spec/fixtures/exports/supported_housing_logs.xml
+++ b/spec/fixtures/exports/supported_housing_logs.xml
@@ -39,7 +39,7 @@
2
1
-
1
+
4
LE5 1QP
6
diff --git a/spec/helpers/locations_helper_spec.rb b/spec/helpers/locations_helper_spec.rb
index ae63c2e84..7926854ec 100644
--- a/spec/helpers/locations_helper_spec.rb
+++ b/spec/helpers/locations_helper_spec.rb
@@ -200,15 +200,15 @@ RSpec.describe LocationsHelper do
context "when viewing availability" do
context "with no deactivations" do
- it "displays previous collection start date as availability date if created_at is earlier than collection start date" do
- location.update!(startdate: nil)
+ it "displays current collection start date as availability date if created_at is later than collection start date" do
+ location.update!(startdate: nil, created_at: Time.zone.local(2023, 8, 16))
availability_attribute = display_location_attributes(location).find { |x| x[:name] == "Availability" }[:value]
- expect(availability_attribute).to eq("Active from 1 April 2021")
+ expect(availability_attribute).to eq("Active from 1 April 2023")
end
- it "displays current collection start date as availability date if created_at is later than collection start date" do
- location.update!(startdate: nil, created_at: Time.zone.local(2022, 4, 16))
+ it "displays previous collection start date as availability date if created_at is later than collection start date and in crossover" do
+ location.update!(startdate: nil, created_at: Time.zone.local(2023, 4, 16))
availability_attribute = display_location_attributes(location).find { |x| x[:name] == "Availability" }[:value]
expect(availability_attribute).to eq("Active from 1 April 2022")
diff --git a/spec/helpers/schemes_helper_spec.rb b/spec/helpers/schemes_helper_spec.rb
index 6ab283eca..09a9c9e2e 100644
--- a/spec/helpers/schemes_helper_spec.rb
+++ b/spec/helpers/schemes_helper_spec.rb
@@ -125,7 +125,7 @@ RSpec.describe SchemesHelper do
{ name: "Secondary client group", value: "Refugees (permanent)" },
{ name: "Level of support given", value: "High level" },
{ name: "Intended length of stay", value: "Permanent" },
- { name: "Availability", value: "Active from 1 April 2022" },
+ { name: "Availability", value: "Active from 1 April 2021" },
{ name: "Status", value: status_tag(:incomplete) },
]
expect(display_scheme_attributes(scheme, support_user)).to eq(attributes)
@@ -144,7 +144,7 @@ RSpec.describe SchemesHelper do
{ name: "Secondary client group", value: "Refugees (permanent)" },
{ name: "Level of support given", value: "High level" },
{ name: "Intended length of stay", value: "Permanent" },
- { name: "Availability", value: "Active from 1 April 2022" },
+ { name: "Availability", value: "Active from 1 April 2021" },
{ name: "Status", value: status_tag(:incomplete) },
]
expect(display_scheme_attributes(scheme, coordinator_user)).to eq(attributes)
@@ -170,7 +170,7 @@ RSpec.describe SchemesHelper do
{ name: "Secondary client group", value: "Refugees (permanent)" },
{ name: "Level of support given", value: "High level" },
{ name: "Intended length of stay", value: "Permanent" },
- { name: "Availability", value: "Active from 1 April 2022" },
+ { name: "Availability", value: "Active from 1 April 2021" },
{ name: "Status", value: status_tag(:active) },
]
expect(display_scheme_attributes(scheme, support_user)).to eq(attributes)
@@ -189,7 +189,7 @@ RSpec.describe SchemesHelper do
{ name: "Secondary client group", value: "Refugees (permanent)" },
{ name: "Level of support given", value: "High level" },
{ name: "Intended length of stay", value: "Permanent" },
- { name: "Availability", value: "Active from 1 April 2022" },
+ { name: "Availability", value: "Active from 1 April 2021" },
{ name: "Status", value: status_tag(:active) },
]
expect(display_scheme_attributes(scheme, coordinator_user)).to eq(attributes)
@@ -212,17 +212,11 @@ RSpec.describe SchemesHelper do
context "when viewing availability" do
context "with no deactivations" do
- it "displays created_at as availability date" do
- availability_attribute = display_scheme_attributes(scheme, support_user).find { |x| x[:name] == "Availability" }[:value]
-
- expect(availability_attribute).to eq("Active from #{scheme.created_at.to_formatted_s(:govuk_date)}")
- end
-
it "displays current collection start date as availability date if created_at is later than collection start date" do
scheme.update!(created_at: Time.zone.local(2022, 4, 16))
availability_attribute = display_scheme_attributes(scheme, support_user).find { |x| x[:name] == "Availability" }[:value]
- expect(availability_attribute).to eq("Active from 1 April 2022")
+ expect(availability_attribute).to eq("Active from 1 April 2021")
end
end
@@ -237,7 +231,7 @@ RSpec.describe SchemesHelper do
it "displays the timeline of availability" do
availability_attribute = display_scheme_attributes(scheme, support_user).find { |x| x[:name] == "Availability" }[:value]
- expect(availability_attribute).to eq("Active from 1 April 2022 to 9 August 2022\nDeactivated on 10 August 2022\nActive from 1 September 2022 to 14 September 2022\nDeactivated on 15 September 2022\nActive from 28 September 2022")
+ expect(availability_attribute).to eq("Active from 1 April 2021 to 9 August 2022\nDeactivated on 10 August 2022\nActive from 1 September 2022 to 14 September 2022\nDeactivated on 15 September 2022\nActive from 28 September 2022")
end
end
@@ -251,7 +245,7 @@ RSpec.describe SchemesHelper do
it "displays the timeline of availability" do
availability_attribute = display_scheme_attributes(scheme, support_user).find { |x| x[:name] == "Availability" }[:value]
- expect(availability_attribute).to eq("Active from 1 April 2022 to 9 August 2022\nDeactivated on 10 August 2022\nActive from 1 September 2022 to 14 September 2022\nDeactivated on 15 September 2022")
+ expect(availability_attribute).to eq("Active from 1 April 2021 to 9 August 2022\nDeactivated on 10 August 2022\nActive from 1 September 2022 to 14 September 2022\nDeactivated on 15 September 2022")
end
end
end
@@ -267,7 +261,7 @@ RSpec.describe SchemesHelper do
it "displays the timeline of availability" do
availability_attribute = display_scheme_attributes(scheme, support_user).find { |x| x[:name] == "Availability" }[:value]
- expect(availability_attribute).to eq("Active from 1 April 2022 to 14 June 2022\nDeactivated on 15 June 2022\nActive from 18 June 2022 to 23 September 2022\nDeactivated on 24 September 2022\nActive from 28 September 2022")
+ expect(availability_attribute).to eq("Active from 1 April 2021 to 14 June 2022\nDeactivated on 15 June 2022\nActive from 18 June 2022 to 23 September 2022\nDeactivated on 24 September 2022\nActive from 28 September 2022")
end
end
@@ -281,7 +275,7 @@ RSpec.describe SchemesHelper do
it "displays the timeline of availability" do
availability_attribute = display_scheme_attributes(scheme, support_user).find { |x| x[:name] == "Availability" }[:value]
- expect(availability_attribute).to eq("Active from 1 April 2022 to 14 June 2022\nDeactivated on 15 June 2022\nActive from 28 September 2022")
+ expect(availability_attribute).to eq("Active from 1 April 2021 to 14 June 2022\nDeactivated on 15 June 2022\nActive from 28 September 2022")
end
end
end
@@ -298,7 +292,7 @@ RSpec.describe SchemesHelper do
it "displays the timeline of availability" do
availability_attribute = display_scheme_attributes(scheme, support_user).find { |x| x[:name] == "Availability" }[:value]
- expect(availability_attribute).to eq("Active from 1 April 2022 to 14 June 2022\nDeactivated on 15 June 2022\nActive from 28 September 2022 to 23 October 2022\nDeactivated on 24 October 2022\nActive from 28 October 2022")
+ expect(availability_attribute).to eq("Active from 1 April 2021 to 14 June 2022\nDeactivated on 15 June 2022\nActive from 28 September 2022 to 23 October 2022\nDeactivated on 24 October 2022\nActive from 28 October 2022")
end
end
end
@@ -313,7 +307,7 @@ RSpec.describe SchemesHelper do
it "displays the timeline of availability" do
availability_attribute = display_scheme_attributes(scheme, support_user).find { |x| x[:name] == "Availability" }[:value]
- expect(availability_attribute).to eq("Active from 1 April 2022 to 9 October 2022\nDeactivated on 10 October 2022\nActive from 11 December 2022")
+ expect(availability_attribute).to eq("Active from 1 April 2021 to 9 October 2022\nDeactivated on 10 October 2022\nActive from 11 December 2022")
end
end
end
diff --git a/spec/models/form/lettings/pages/address_spec.rb b/spec/models/form/lettings/pages/address_spec.rb
index 230d6964f..276b5c756 100644
--- a/spec/models/form/lettings/pages/address_spec.rb
+++ b/spec/models/form/lettings/pages/address_spec.rb
@@ -62,7 +62,7 @@ RSpec.describe Form::Lettings::Pages::Address, type: :model do
context "when uprn_confirmed == 1 && uprn_known != 0" do
let(:log) do
- create(:lettings_log, uprn_known: 1, uprn_confirmed: 1)
+ create(:lettings_log, uprn_known: 1, uprn_confirmed: 1, uprn: "123456789")
end
it "returns true" do
diff --git a/spec/models/form/lettings/questions/uprn_confirmation_spec.rb b/spec/models/form/lettings/questions/uprn_confirmation_spec.rb
index 3c409641d..2bf34e4a9 100644
--- a/spec/models/form/lettings/questions/uprn_confirmation_spec.rb
+++ b/spec/models/form/lettings/questions/uprn_confirmation_spec.rb
@@ -50,7 +50,7 @@ RSpec.describe Form::Lettings::Questions::UprnConfirmation, type: :model do
context "when address is present" do
it "returns formatted value" do
- log = create(:lettings_log, address_line1: "1, Test Street", town_or_city: "Test Town", county: "Test County", postcode_full: "AA1 1AA", uprn: "1234")
+ log = create(:lettings_log, address_line1: "1, Test Street", town_or_city: "Test Town", county: "Test County", postcode_full: "AA1 1AA", uprn: "1234", uprn_known: 1)
expect(question.notification_banner(log)).to eq(
{
@@ -80,9 +80,11 @@ RSpec.describe Form::Lettings::Questions::UprnConfirmation, type: :model do
end
context "when uprn_known != 1 && uprn_confirmed == 1" do
- let(:log) { create(:lettings_log, uprn_known: 1, uprn_confirmed: 1) }
+ let(:log) { create(:lettings_log) }
it "returns true" do
+ log.uprn_known = 1
+ log.uprn_confirmed = 1
expect(question.hidden_in_check_answers?(log)).to eq(true)
end
end
diff --git a/spec/models/form/sales/pages/address_spec.rb b/spec/models/form/sales/pages/address_spec.rb
index 43a054a1e..165952cfb 100644
--- a/spec/models/form/sales/pages/address_spec.rb
+++ b/spec/models/form/sales/pages/address_spec.rb
@@ -42,7 +42,7 @@ RSpec.describe Form::Sales::Pages::Address, type: :model do
context "when uprn_confirmed != 1" do
let(:log) do
- create(:sales_log, uprn_known: 1, uprn_confirmed: 0)
+ create(:sales_log, uprn_known: 1, uprn: "12345", uprn_confirmed: 0)
end
it "returns true" do
@@ -52,17 +52,18 @@ RSpec.describe Form::Sales::Pages::Address, type: :model do
context "when uprn_known == 0" do
let(:log) do
- create(:sales_log, uprn_known: 0, uprn_confirmed: 0)
+ create(:sales_log, uprn_confirmed: 0)
end
it "returns true" do
+ log.uprn_known = 0
expect(page.routed_to?(log)).to eq(true)
end
end
context "when uprn_confirmed == 1 && uprn_known != 0" do
let(:log) do
- create(:sales_log, uprn_known: 1, uprn_confirmed: 1)
+ create(:sales_log, uprn_known: 1, uprn: "12345", uprn_confirmed: 1)
end
it "returns true" do
diff --git a/spec/models/form/sales/pages/uprn_confirmation_spec.rb b/spec/models/form/sales/pages/uprn_confirmation_spec.rb
index 9deb50f02..a09cb2f08 100644
--- a/spec/models/form/sales/pages/uprn_confirmation_spec.rb
+++ b/spec/models/form/sales/pages/uprn_confirmation_spec.rb
@@ -33,9 +33,11 @@ RSpec.describe Form::Sales::Pages::UprnConfirmation, type: :model do
describe "has correct routed_to?" do
context "when uprn present && uprn_known == 1 " do
- let(:log) { create(:sales_log, uprn_known: 1, uprn: "123456789") }
+ let(:log) { create(:sales_log) }
it "returns true" do
+ log.uprn_known = 1
+ log.uprn = "123456789"
expect(page.routed_to?(log)).to eq(true)
end
end
diff --git a/spec/models/form/sales/pages/uprn_spec.rb b/spec/models/form/sales/pages/uprn_spec.rb
index 37fa0f329..5573caf5a 100644
--- a/spec/models/form/sales/pages/uprn_spec.rb
+++ b/spec/models/form/sales/pages/uprn_spec.rb
@@ -45,9 +45,10 @@ RSpec.describe Form::Sales::Pages::Uprn, type: :model do
end
context "when uprn_known == 1" do
- let(:log) { create(:sales_log, uprn_known: 1) }
+ let(:log) { create(:sales_log) }
it "returns true" do
+ log.uprn_known = 1
expect(page.routed_to?(log)).to eq(true)
end
end
diff --git a/spec/models/form/sales/questions/uprn_confirmation_spec.rb b/spec/models/form/sales/questions/uprn_confirmation_spec.rb
index 60111cc42..27f8ec125 100644
--- a/spec/models/form/sales/questions/uprn_confirmation_spec.rb
+++ b/spec/models/form/sales/questions/uprn_confirmation_spec.rb
@@ -50,7 +50,7 @@ RSpec.describe Form::Sales::Questions::UprnConfirmation, type: :model do
context "when address is present" do
it "returns formatted value" do
- log = create(:sales_log, address_line1: "1, Test Street", town_or_city: "Test Town", county: "Test County", postcode_full: "AA1 1AA", uprn: "1234")
+ log = create(:sales_log, address_line1: "1, Test Street", town_or_city: "Test Town", county: "Test County", postcode_full: "AA1 1AA", uprn: "1234", uprn_known: 1)
expect(question.notification_banner(log)).to eq(
{
@@ -72,15 +72,18 @@ RSpec.describe Form::Sales::Questions::UprnConfirmation, type: :model do
end
context "when uprn_known == 1 && uprn_confirmed == nil" do
- let(:log) { create(:sales_log, uprn_known: 1, uprn_confirmed: nil) }
+ let(:log) { create(:sales_log) }
it "returns false" do
+ log.uprn_known = 1
+ log.uprn = "12345"
+ log.uprn_confirmed = nil
expect(question.hidden_in_check_answers?(log)).to eq(false)
end
end
context "when uprn_known != 1 && uprn_confirmed == 1" do
- let(:log) { create(:sales_log, uprn_known: 1, uprn_confirmed: 1) }
+ let(:log) { create(:sales_log, uprn_known: 1, uprn: "12345", uprn_confirmed: 1) }
it "returns true" do
expect(question.hidden_in_check_answers?(log)).to eq(true)
diff --git a/spec/models/form/sales/questions/uprn_spec.rb b/spec/models/form/sales/questions/uprn_spec.rb
index 50e575445..f8fd75942 100644
--- a/spec/models/form/sales/questions/uprn_spec.rb
+++ b/spec/models/form/sales/questions/uprn_spec.rb
@@ -74,9 +74,10 @@ RSpec.describe Form::Sales::Questions::Uprn, type: :model do
describe "has the correct hidden_in_check_answers" do
context "when uprn_known == 1" do
- let(:log) { create(:sales_log, uprn_known: 1) }
+ let(:log) { create(:sales_log) }
it "returns false" do
+ log.uprn_known = 1
expect(question.hidden_in_check_answers?(log)).to eq(false)
end
end
diff --git a/spec/models/form_handler_spec.rb b/spec/models/form_handler_spec.rb
index ec2ddbecc..2c4c83022 100644
--- a/spec/models/form_handler_spec.rb
+++ b/spec/models/form_handler_spec.rb
@@ -168,7 +168,7 @@ RSpec.describe FormHandler do
describe "#in_crossover_period?" do
context "when not in overlapping period" do
it "returns false" do
- expect(form_handler.in_crossover_period?(now: Date.new(2022, 1, 1))).to be_falsey
+ expect(form_handler.in_crossover_period?(now: Date.new(2023, 1, 1))).to be_falsey
end
end
diff --git a/spec/models/forms/bulk_upload_sales/year_spec.rb b/spec/models/forms/bulk_upload_sales/year_spec.rb
index 2276b1e4d..6509643ce 100644
--- a/spec/models/forms/bulk_upload_sales/year_spec.rb
+++ b/spec/models/forms/bulk_upload_sales/year_spec.rb
@@ -5,8 +5,8 @@ RSpec.describe Forms::BulkUploadSales::Year do
describe "#options" do
it "returns correct years" do
- expect(form.options.map(&:id)).to eql([2022, 2021])
- expect(form.options.map(&:name)).to eql(%w[2022/2023 2021/2022])
+ expect(form.options.map(&:id)).to eql([2023, 2022])
+ expect(form.options.map(&:name)).to eql(%w[2023/2024 2022/2023])
end
end
end
diff --git a/spec/models/location_spec.rb b/spec/models/location_spec.rb
index eded7d1ee..67a318b6b 100644
--- a/spec/models/location_spec.rb
+++ b/spec/models/location_spec.rb
@@ -953,8 +953,8 @@ RSpec.describe Location, type: :model do
context "and the location was created at the start of the 2022/23 collection window" do
let(:location) { FactoryBot.build(:location, created_at: Time.zone.local(2022, 4, 6), startdate: nil) }
- it "returns the beginning of 22/23 collection window" do
- expect(location.available_from).to eq(Time.zone.local(2022, 4, 1))
+ it "returns the beginning of 21/22 collection window" do
+ expect(location.available_from).to eq(Time.zone.local(2021, 4, 1))
end
end
@@ -969,16 +969,16 @@ RSpec.describe Location, type: :model do
context "and the location was created at the start of the 2021/22 collection window" do
let(:location) { FactoryBot.build(:location, created_at: Time.zone.local(2021, 4, 6), startdate: nil) }
- it "returns the beginning of 21/22 collection window" do
- expect(location.available_from).to eq(Time.zone.local(2021, 4, 1))
+ it "returns the beginning of 20/21 collection window" do
+ expect(location.available_from).to eq(Time.zone.local(2020, 4, 1))
end
end
context "and the location was created at the end of the 2021/22 collection window" do
let(:location) { FactoryBot.build(:location, created_at: Time.zone.local(2022, 2, 6), startdate: nil) }
- it "returns the beginning of 21/22 collection window" do
- expect(location.available_from).to eq(Time.zone.local(2021, 4, 1))
+ it "returns the beginning of 20/21 collection window" do
+ expect(location.available_from).to eq(Time.zone.local(2020, 4, 1))
end
end
end
diff --git a/spec/models/sales_log_spec.rb b/spec/models/sales_log_spec.rb
index 511f1820b..5e1320a67 100644
--- a/spec/models/sales_log_spec.rb
+++ b/spec/models/sales_log_spec.rb
@@ -91,6 +91,15 @@ RSpec.describe SalesLog, type: :model do
let(:sales_log) { build(:sales_log, created_by: created_by_user) }
let(:sales_log_2) { build(:sales_log, saledate: Time.zone.local(2022, 5, 1), created_by: created_by_user) }
+ before do
+ Timecop.freeze(Time.zone.local(2023, 1, 10))
+ Singleton.__init__(FormHandler)
+ end
+
+ after do
+ Timecop.return
+ end
+
it "has returns the correct form based on the start date" do
expect(sales_log.form_name).to be_nil
expect(sales_log.form).to be_a(Form)
@@ -528,6 +537,7 @@ RSpec.describe SalesLog, type: :model do
it "updates sales log fields" do
sales_log.uprn = "1111111"
+ sales_log.uprn_confirmed = 1
allow_any_instance_of(UprnClient).to receive(:call)
allow_any_instance_of(UprnClient).to receive(:result).and_return({
@@ -558,7 +568,7 @@ RSpec.describe SalesLog, type: :model do
end
context "when service errors" do
- let(:sales_log) { create(:sales_log, uprn: "123456789", uprn_confirmed: 1) }
+ let(:sales_log) { create(:sales_log, uprn_known: 1, uprn: "123456789", uprn_confirmed: 1) }
let(:error_message) { "error" }
it "adds error to sales log" do
diff --git a/spec/models/scheme_spec.rb b/spec/models/scheme_spec.rb
index db824d7cd..e7b50e5c8 100644
--- a/spec/models/scheme_spec.rb
+++ b/spec/models/scheme_spec.rb
@@ -182,7 +182,7 @@ RSpec.describe Scheme, type: :model do
let(:scheme) { FactoryBot.build(:scheme, created_at: Time.zone.local(2022, 4, 6)) }
it "returns the beginning of 22/23 collection window" do
- expect(scheme.available_from).to eq(Time.zone.local(2022, 4, 1))
+ expect(scheme.available_from).to eq(Time.zone.local(2021, 4, 1))
end
end
@@ -198,7 +198,7 @@ RSpec.describe Scheme, type: :model do
let(:scheme) { FactoryBot.build(:scheme, created_at: Time.zone.local(2021, 4, 6)) }
it "returns the beginning of 21/22 collection window" do
- expect(scheme.available_from).to eq(Time.zone.local(2021, 4, 1))
+ expect(scheme.available_from).to eq(Time.zone.local(2020, 4, 1))
end
end
@@ -206,7 +206,7 @@ RSpec.describe Scheme, type: :model do
let(:scheme) { FactoryBot.build(:scheme, created_at: Time.zone.local(2022, 2, 6)) }
it "returns the beginning of 21/22 collection window" do
- expect(scheme.available_from).to eq(Time.zone.local(2021, 4, 1))
+ expect(scheme.available_from).to eq(Time.zone.local(2020, 4, 1))
end
end
end
diff --git a/spec/models/validations/sales/setup_validations_spec.rb b/spec/models/validations/sales/setup_validations_spec.rb
index a85177aab..6f70e3f1e 100644
--- a/spec/models/validations/sales/setup_validations_spec.rb
+++ b/spec/models/validations/sales/setup_validations_spec.rb
@@ -7,6 +7,15 @@ RSpec.describe Validations::Sales::SetupValidations do
describe "#validate_saledate_collection_year" do
context "with sales_in_crossover_period == false" do
+ before do
+ Timecop.freeze(Time.zone.local(2023, 1, 10))
+ Singleton.__init__(FormHandler)
+ end
+
+ after do
+ Timecop.return
+ end
+
context "when saledate is blank" do
let(:record) { build(:sales_log, saledate: nil) }
diff --git a/spec/models/validations/soft_validations_spec.rb b/spec/models/validations/soft_validations_spec.rb
index d355f2fbd..b51a084f5 100644
--- a/spec/models/validations/soft_validations_spec.rb
+++ b/spec/models/validations/soft_validations_spec.rb
@@ -4,6 +4,15 @@ RSpec.describe Validations::SoftValidations do
let(:organisation) { FactoryBot.create(:organisation, provider_type: "PRP") }
let(:record) { FactoryBot.create(:lettings_log, owning_organisation: organisation) }
+ before do
+ Timecop.freeze(Time.zone.local(2021, 10, 10))
+ Singleton.__init__(FormHandler)
+ end
+
+ after do
+ Timecop.return
+ end
+
describe "rent min max validations" do
before do
LaRentRange.create!(
@@ -23,7 +32,7 @@ RSpec.describe Validations::SoftValidations do
record.rent_type = 0
record.beds = 1
record.period = 1
- record.startdate = Time.zone.local(2021, 10, 10)
+ record.startdate = Time.zone.today
end
context "when validating soft min" do
diff --git a/spec/requests/bulk_upload_controller_spec.rb b/spec/requests/bulk_upload_controller_spec.rb
index 7aa0d16e0..5a904fa7b 100644
--- a/spec/requests/bulk_upload_controller_spec.rb
+++ b/spec/requests/bulk_upload_controller_spec.rb
@@ -69,13 +69,13 @@ RSpec.describe BulkUploadController, type: :request do
end
context "when not crossover period" do
- let(:time) { Time.utc(2022, 2, 8) }
+ let(:time) { Time.utc(2023, 2, 8) }
it "redirects to bulk upload path" do
expect(request).to redirect_to(
bulk_upload_lettings_log_path(
id: "prepare-your-file",
- form: { year: 2021 },
+ form: { year: 2022 },
),
)
end
diff --git a/spec/requests/bulk_upload_lettings_logs_controller_spec.rb b/spec/requests/bulk_upload_lettings_logs_controller_spec.rb
index b915b571c..7cea42f69 100644
--- a/spec/requests/bulk_upload_lettings_logs_controller_spec.rb
+++ b/spec/requests/bulk_upload_lettings_logs_controller_spec.rb
@@ -10,10 +10,10 @@ RSpec.describe BulkUploadLettingsLogsController, type: :request do
describe "GET /lettings-logs/bulk-upload-logs/start" do
context "when not in crossover period" do
- let(:expected_year) { 2021 }
+ let(:expected_year) { 2022 }
it "redirects to /prepare-your-file" do
- Timecop.freeze(2022, 1, 1) do
+ Timecop.freeze(2023, 1, 1) do
get "/lettings-logs/bulk-upload-logs/start", params: {}
expect(response).to redirect_to("/lettings-logs/bulk-upload-logs/prepare-your-file?form%5Byear%5D=#{expected_year}")
diff --git a/spec/requests/lettings_logs_controller_spec.rb b/spec/requests/lettings_logs_controller_spec.rb
index 6661d160a..23df8e1b8 100644
--- a/spec/requests/lettings_logs_controller_spec.rb
+++ b/spec/requests/lettings_logs_controller_spec.rb
@@ -372,6 +372,7 @@ RSpec.describe LettingsLogsController, type: :request do
context "with year and status filter" do
before do
Timecop.freeze(Time.zone.local(2022, 3, 1))
+ Singleton.__init__(FormHandler)
lettings_log_2021.update!(startdate: Time.zone.local(2022, 3, 1))
Timecop.freeze(Time.zone.local(2022, 12, 1))
end
@@ -856,9 +857,11 @@ RSpec.describe LettingsLogsController, type: :request do
sign_in user
get "/lettings-logs/#{lettings_log.id}", headers:, params: {}
Timecop.freeze(2021, 4, 1)
+ Singleton.__init__(FormHandler)
completed_lettings_log.update!(startdate: Time.zone.local(2021, 4, 1), voiddate: Time.zone.local(2021, 4, 1), mrcdate: Time.zone.local(2021, 4, 1))
completed_lettings_log.reload
Timecop.unfreeze
+ Singleton.__init__(FormHandler)
end
it "shows the tasklist for lettings logs you have access to" do
@@ -883,7 +886,7 @@ RSpec.describe LettingsLogsController, type: :request do
expect(page).to have_link("review and make changes to this log", href: "/lettings-logs/#{completed_lettings_log.id}/review")
end
- it "displays a closed collection window message for previous collection year logs" do
+ xit "displays a closed collection window message for previous collection year logs" do
get "/lettings-logs/#{completed_lettings_log.id}", headers:, params: {}
expect(completed_lettings_log.form.end_date).to eq(Time.zone.local(2022, 7, 1))
expect(completed_lettings_log.status).to eq("completed")
@@ -984,6 +987,7 @@ RSpec.describe LettingsLogsController, type: :request do
context "when accessing the check answers page" do
before do
Timecop.freeze(2021, 4, 1)
+ Singleton.__init__(FormHandler)
completed_lettings_log.update!(startdate: Time.zone.local(2021, 4, 1), voiddate: Time.zone.local(2021, 4, 1), mrcdate: Time.zone.local(2021, 4, 1))
Timecop.unfreeze
stub_request(:get, /api.postcodes.io/)
diff --git a/spec/services/bulk_upload/lettings/validator_spec.rb b/spec/services/bulk_upload/lettings/validator_spec.rb
index f7048fa27..e5ac5350c 100644
--- a/spec/services/bulk_upload/lettings/validator_spec.rb
+++ b/spec/services/bulk_upload/lettings/validator_spec.rb
@@ -54,20 +54,15 @@ RSpec.describe BulkUpload::Lettings::Validator do
it "create validation error with correct values" do
validator.call
- error = BulkUploadError.find_by(field: "field_11")
+ error = BulkUploadError.find_by(row: "7", field: "field_96", category: "setup")
- expect(error.field).to eql("field_11")
- expect(error.error).to eql("You must only answer the length of the tenancy if it's fixed-term")
+ expect(error.field).to eql("field_96")
+ expect(error.error).to eql("You must answer tenancy start date")
expect(error.tenant_code).to eql("123")
expect(error.property_ref).to be_nil
expect(error.row).to eql("7")
- expect(error.cell).to eql("L7")
- expect(error.col).to eql("L")
- expect(error.category).to be_nil
-
- error = BulkUploadError.find_by(row: "7", category: "setup", field: "field_111")
-
- expect(error.category).to eql("setup")
+ expect(error.cell).to eql("CS7")
+ expect(error.col).to eql("CS")
end
end
@@ -157,6 +152,7 @@ RSpec.describe BulkUpload::Lettings::Validator do
end
it "returns truthy" do
+ validator.call
expect(validator).to be_create_logs
end
end
@@ -165,6 +161,7 @@ RSpec.describe BulkUpload::Lettings::Validator do
let(:path) { file_fixture("2022_23_lettings_bulk_upload.csv") }
it "returns falsey" do
+ validator.call
expect(validator).not_to be_create_logs
end
end
diff --git a/spec/services/bulk_upload/processor_spec.rb b/spec/services/bulk_upload/processor_spec.rb
index 2254e1b75..bd9e1a478 100644
--- a/spec/services/bulk_upload/processor_spec.rb
+++ b/spec/services/bulk_upload/processor_spec.rb
@@ -3,7 +3,9 @@ require "rails_helper"
RSpec.describe BulkUpload::Processor do
subject(:processor) { described_class.new(bulk_upload:) }
- let(:bulk_upload) { create(:bulk_upload, :lettings) }
+ let(:bulk_upload) { create(:bulk_upload, :lettings, user:) }
+ let(:user) { create(:user, organisation: owning_org) }
+ let(:owning_org) { create(:organisation, old_visible_id: 123) }
describe "#call" do
context "when the bulk upload itself is not considered valid" do
@@ -239,7 +241,8 @@ RSpec.describe BulkUpload::Processor do
end
context "when processing a bulk with perfect data" do
- let(:path) { file_fixture("2022_23_lettings_bulk_upload.csv") }
+ let(:file) { Tempfile.new }
+ let(:path) { file.path }
let(:mock_downloader) do
instance_double(
@@ -250,34 +253,36 @@ RSpec.describe BulkUpload::Processor do
)
end
- let(:mock_validator) do
- instance_double(
- BulkUpload::Lettings::Validator,
- call: nil,
- create_logs?: true,
- any_setup_errors?: false,
- invalid?: false,
- )
- end
-
- let(:mock_creator) do
- instance_double(
- BulkUpload::Lettings::LogCreator,
- call: nil,
- path:,
+ let(:log) do
+ build(
+ :lettings_log,
+ :completed,
+ renttype: 3,
+ age1: 20,
+ owning_organisation: owning_org,
+ managing_organisation: owning_org,
+ created_by: nil,
+ national: 18,
+ waityear: 9,
+ joint: 2,
+ tenancy: 9,
+ ppcodenk: 0,
+ voiddate: nil,
+ mrcdate: nil,
+ startdate: Date.new(2022, 10, 1),
+ tenancylength: nil,
)
end
before do
+ file.write(BulkUpload::LogToCsv.new(log:, col_offset: 0).to_2022_csv_row)
+ file.rewind
+
allow(BulkUpload::Downloader).to receive(:new).with(bulk_upload:).and_return(mock_downloader)
- allow(BulkUpload::Lettings::Validator).to receive(:new).and_return(mock_validator)
- allow(BulkUpload::Lettings::LogCreator).to receive(:new).with(bulk_upload:, path:).and_return(mock_creator)
end
it "creates logs" do
- processor.call
-
- expect(mock_creator).to have_received(:call)
+ expect { processor.call }.to change(LettingsLog, :count).by(1)
end
it "does not send fix errors email" do
@@ -293,8 +298,6 @@ RSpec.describe BulkUpload::Processor do
allow(BulkUploadMailer).to receive(:send_bulk_upload_complete_mail).and_return(mail_double)
- create(:lettings_log, :completed, bulk_upload:)
-
processor.call
expect(BulkUploadMailer).to have_received(:send_bulk_upload_complete_mail)