diff --git a/spec/models/case_log_spec.rb b/spec/models/case_log_spec.rb index 4e929451a..2e272cf25 100644 --- a/spec/models/case_log_spec.rb +++ b/spec/models/case_log_spec.rb @@ -1,7 +1,7 @@ require "rails_helper" require_relative "../request_helper" -RSpec.describe Form, type: :model do +RSpec.describe CaseLog do let(:owning_organisation) { FactoryBot.create(:organisation) } let(:managing_organisation) { owning_organisation } @@ -18,21 +18,31 @@ RSpec.describe Form, type: :model do expect(case_log.form_name).to eq("2021_2022") expect(case_log_2.form_name).to eq("2021_2022") expect(case_log_year_2.form_name).to eq("2023_2024") - expect(case_log.form).to be_a(described_class) + expect(case_log.form).to be_a(Form) end end describe "#new" do + it "raises an error when offered is present and invalid" do + expect { + described_class.create!( + offered: "random", + owning_organisation: owning_organisation, + managing_organisation: managing_organisation, + ) + }.to raise_error(ActiveRecord::RecordInvalid) + end + it "validates age is a number" do expect { - CaseLog.create!( + described_class.create!( age1: "random", owning_organisation: owning_organisation, managing_organisation: managing_organisation, ) }.to raise_error(ActiveRecord::RecordInvalid) expect { - CaseLog.create!( + described_class.create!( age3: "random", owning_organisation: owning_organisation, managing_organisation: managing_organisation, @@ -42,14 +52,14 @@ RSpec.describe Form, type: :model do it "validates age is under 120" do expect { - CaseLog.create!( + described_class.create!( age1: 121, owning_organisation: owning_organisation, managing_organisation: managing_organisation, ) }.to raise_error(ActiveRecord::RecordInvalid) expect { - CaseLog.create!( + described_class.create!( age3: 121, owning_organisation: owning_organisation, managing_organisation: managing_organisation, @@ -59,14 +69,14 @@ RSpec.describe Form, type: :model do it "validates age is over 0" do expect { - CaseLog.create!( + described_class.create!( age1: 0, owning_organisation: owning_organisation, managing_organisation: managing_organisation, ) }.to raise_error(ActiveRecord::RecordInvalid) expect { - CaseLog.create!( + described_class.create!( age3: 0, owning_organisation: owning_organisation, managing_organisation: managing_organisation, @@ -77,7 +87,7 @@ RSpec.describe Form, type: :model do context "reasonable preference is yes" do it "validates that previously homeless should be selected" do expect { - CaseLog.create!( + described_class.create!( homeless: "No", reasonpref: "Yes", owning_organisation: owning_organisation, @@ -90,7 +100,7 @@ RSpec.describe Form, type: :model do context "reasonable preference is no" do it "validates no reason is needed" do expect { - CaseLog.create!( + described_class.create!( reasonpref: "No", rp_homeless: "No", owning_organisation: owning_organisation, @@ -101,7 +111,7 @@ RSpec.describe Form, type: :model do it "validates that no reason has been provided" do expect { - CaseLog.create!( + described_class.create!( reasonpref: "No", rp_medwel: "Yes", owning_organisation: owning_organisation, @@ -114,10 +124,10 @@ RSpec.describe Form, type: :model do context "reason for leaving last settled home validation" do it "Reason for leaving must be don’t know if reason for leaving settled home (Q9a) is don’t know." do expect { - CaseLog.create!(reason: "Don’t know", - underoccupation_benefitcap: "Yes - benefit cap", - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(reason: "Don’t know", + underoccupation_benefitcap: "Yes - benefit cap", + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.to raise_error(ActiveRecord::RecordInvalid) end end @@ -125,19 +135,19 @@ RSpec.describe Form, type: :model do context "other reason for leaving last settled home validation" do it "must be provided if main reason for leaving last settled home was given as other" do expect { - CaseLog.create!(reason: "Other", - other_reason_for_leaving_last_settled_home: nil, - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(reason: "Other", + other_reason_for_leaving_last_settled_home: nil, + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.to raise_error(ActiveRecord::RecordInvalid) end it "must not be provided if the main reason for leaving settled home is not other" do expect { - CaseLog.create!(reason: "Repossession", - other_reason_for_leaving_last_settled_home: "the other reason provided", - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(reason: "Repossession", + other_reason_for_leaving_last_settled_home: "the other reason provided", + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.to raise_error(ActiveRecord::RecordInvalid) end end @@ -145,10 +155,10 @@ RSpec.describe Form, type: :model do context "armed forces injured validation" do it "must not be answered if tenant was not a regular or reserve in armed forces" do expect { - CaseLog.create!(armedforces: "No", - reservist: "Yes", - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(armedforces: "No", + reservist: "Yes", + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.to raise_error(ActiveRecord::RecordInvalid) end end @@ -156,52 +166,52 @@ RSpec.describe Form, type: :model do context "Validate pregnancy questions" do it "Cannot answer yes if no female tenants" do expect { - CaseLog.create!(preg_occ: "Yes", - sex1: "Male", - age1: 20, - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(preg_occ: "Yes", + sex1: "Male", + age1: 20, + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.to raise_error(ActiveRecord::RecordInvalid) end it "Cannot answer yes if no female tenants within age range" do expect { - CaseLog.create!(preg_occ: "Yes", - sex1: "Female", - age1: 51, - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(preg_occ: "Yes", + sex1: "Female", + age1: 51, + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.to raise_error(ActiveRecord::RecordInvalid) end it "Cannot answer prefer not to say if no valid tenants" do expect { - CaseLog.create!(preg_occ: "Prefer not to say", - sex1: "Male", - age1: 20, - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(preg_occ: "Prefer not to say", + sex1: "Male", + age1: 20, + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.to raise_error(ActiveRecord::RecordInvalid) end it "Can answer yes if valid tenants" do expect { - CaseLog.create!(preg_occ: "Yes", - sex1: "Female", - age1: 20, - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(preg_occ: "Yes", + sex1: "Female", + age1: 20, + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.not_to raise_error end it "Can answer yes if valid second tenant" do expect { - CaseLog.create!(preg_occ: "Yes", - sex1: "Male", age1: 99, - sex2: "Female", - age2: 20, - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(preg_occ: "Yes", + sex1: "Male", age1: 99, + sex2: "Female", + age2: 20, + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.not_to raise_error end end @@ -209,7 +219,7 @@ RSpec.describe Form, type: :model do context "Property vacancy and let as validations" do it "cannot have a previously let as type, if it hasn't been let before" do expect { - CaseLog.create!( + described_class.create!( first_time_property_let_as_social_housing: "No", unitletas: "Social rent basis", owning_organisation: owning_organisation, @@ -217,7 +227,7 @@ RSpec.describe Form, type: :model do ) }.not_to raise_error expect { - CaseLog.create!( + described_class.create!( first_time_property_let_as_social_housing: "Yes", unitletas: "Social rent basis", owning_organisation: owning_organisation, @@ -225,7 +235,7 @@ RSpec.describe Form, type: :model do ) }.to raise_error(ActiveRecord::RecordInvalid) expect { - CaseLog.create!( + described_class.create!( first_time_property_let_as_social_housing: "Yes", unitletas: "Affordable rent basis", owning_organisation: owning_organisation, @@ -233,7 +243,7 @@ RSpec.describe Form, type: :model do ) }.to raise_error(ActiveRecord::RecordInvalid) expect { - CaseLog.create!( + described_class.create!( first_time_property_let_as_social_housing: "Yes", unitletas: "Intermediate rent basis", owning_organisation: owning_organisation, @@ -241,7 +251,7 @@ RSpec.describe Form, type: :model do ) }.to raise_error(ActiveRecord::RecordInvalid) expect { - CaseLog.create!( + described_class.create!( first_time_property_let_as_social_housing: "Yes", unitletas: "Don’t know", owning_organisation: owning_organisation, @@ -252,7 +262,7 @@ RSpec.describe Form, type: :model do it "must have a first let reason for vacancy if it's being let as social housing for the first time" do expect { - CaseLog.create!( + described_class.create!( first_time_property_let_as_social_housing: "Yes", rsnvac: "First let of new-build property", owning_organisation: owning_organisation, @@ -260,7 +270,7 @@ RSpec.describe Form, type: :model do ) }.not_to raise_error expect { - CaseLog.create!( + described_class.create!( first_time_property_let_as_social_housing: "Yes", rsnvac: "First let of conversion, rehabilitation or acquired property", owning_organisation: owning_organisation, @@ -268,7 +278,7 @@ RSpec.describe Form, type: :model do ) }.not_to raise_error expect { - CaseLog.create!( + described_class.create!( first_time_property_let_as_social_housing: "Yes", rsnvac: "First let of leased property", owning_organisation: owning_organisation, @@ -276,7 +286,7 @@ RSpec.describe Form, type: :model do ) }.not_to raise_error expect { - CaseLog.create!( + described_class.create!( first_time_property_let_as_social_housing: "Yes", rsnvac: "Tenant moved to care home", owning_organisation: owning_organisation, @@ -289,48 +299,48 @@ RSpec.describe Form, type: :model do context "Shared accomodation bedrooms validation" do it "you must have more than zero bedrooms" do expect { - CaseLog.create!(unittype_gn: "Shared house", - beds: 0, - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(unittype_gn: "Shared house", + beds: 0, + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.to raise_error(ActiveRecord::RecordInvalid) end it "you must answer less than 8 bedrooms" do expect { - CaseLog.create!(unittype_gn: "Shared bungalow", - beds: 8, - other_hhmemb: 1, - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(unittype_gn: "Shared bungalow", + beds: 8, + other_hhmemb: 1, + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.to raise_error(ActiveRecord::RecordInvalid) end it "you must answer less than 8 bedrooms" do expect { - CaseLog.create!(unittype_gn: "Shared bungalow", - beds: 4, - other_hhmemb: 0, - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(unittype_gn: "Shared bungalow", + beds: 4, + other_hhmemb: 0, + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.to raise_error(ActiveRecord::RecordInvalid) end it "A bedsit must only have one room" do expect { - CaseLog.create!(unittype_gn: "Bedsit", - beds: 2, - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(unittype_gn: "Bedsit", + beds: 2, + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.to raise_error(ActiveRecord::RecordInvalid) end it "A bedsit must only have one room" do expect { - CaseLog.create!(unittype_gn: "Bedsit", - beds: 0, - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(unittype_gn: "Bedsit", + beds: 0, + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.to raise_error(ActiveRecord::RecordInvalid) end end @@ -338,10 +348,10 @@ RSpec.describe Form, type: :model do context "outstanding rent or charges validation" do it "must be not be anwered if answered no to outstanding rent or charges" do expect { - CaseLog.create!(hbrentshortfall: "No", - tshortfall: 99, - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(hbrentshortfall: "No", + tshortfall: 99, + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.to raise_error(ActiveRecord::RecordInvalid) end end @@ -349,7 +359,7 @@ RSpec.describe Form, type: :model do context "tenant’s income is from Universal Credit, state pensions or benefits" do it "Cannot be All if person 1 works full time" do expect { - CaseLog.create!( + described_class.create!( benefits: "All", ecstat1: "Full-time - 30 hours or more", owning_organisation: owning_organisation, @@ -360,7 +370,7 @@ RSpec.describe Form, type: :model do it "Cannot be All if person 1 works part time" do expect { - CaseLog.create!( + described_class.create!( benefits: "All", ecstat1: "Part-time - Less than 30 hours", owning_organisation: owning_organisation, @@ -371,7 +381,7 @@ RSpec.describe Form, type: :model do it "Cannot be 1 All if any of persons 2-4 are person 1's partner and work part or full time" do expect { - CaseLog.create!( + described_class.create!( benefits: "All", relat2: "Partner", ecstat2: "Part-time - Less than 30 hours", @@ -385,63 +395,63 @@ RSpec.describe Form, type: :model do context "fixed term tenancy length" do it "Must not be completed if Type of main tenancy is not responded with either Secure or Assured shorthold " do expect { - CaseLog.create!(tenancy: "Other", - tenancylength: 10, - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(tenancy: "Other", + tenancylength: 10, + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.to raise_error(ActiveRecord::RecordInvalid) end it "Must be completed and between 2 and 99 if type of tenancy is Assured shorthold" do expect { - CaseLog.create!(tenancy: "Assured Shorthold", - tenancylength: 1, - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(tenancy: "Assured Shorthold", + tenancylength: 1, + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.to raise_error(ActiveRecord::RecordInvalid) expect { - CaseLog.create!(tenancy: "Assured Shorthold", - tenancylength: nil, - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(tenancy: "Assured Shorthold", + tenancylength: nil, + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.to raise_error(ActiveRecord::RecordInvalid) expect { - CaseLog.create!(tenancy: "Assured Shorthold", - tenancylength: 2, - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(tenancy: "Assured Shorthold", + tenancylength: 2, + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.not_to raise_error end it "Must be empty or between 2 and 99 if type of tenancy is Secure" do expect { - CaseLog.create!(tenancy: "Secure (including flexible)", - tenancylength: 1, - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(tenancy: "Secure (including flexible)", + tenancylength: 1, + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.to raise_error(ActiveRecord::RecordInvalid) expect { - CaseLog.create!(tenancy: "Secure (including flexible)", - tenancylength: 100, - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(tenancy: "Secure (including flexible)", + tenancylength: 100, + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.to raise_error(ActiveRecord::RecordInvalid) expect { - CaseLog.create!(tenancy: "Secure (including flexible)", - tenancylength: nil, - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(tenancy: "Secure (including flexible)", + tenancylength: nil, + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.not_to raise_error expect { - CaseLog.create!(tenancy: "Secure (including flexible)", - tenancylength: 2, - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(tenancy: "Secure (including flexible)", + tenancylength: 2, + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.not_to raise_error end end @@ -449,21 +459,21 @@ RSpec.describe Form, type: :model do context "armed forces active validation" do it "must not be answered if not ever served as a regular" do expect { - CaseLog.create!(armedforces: "No", - leftreg: "Yes", - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(armedforces: "No", + leftreg: "Yes", + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.to raise_error(ActiveRecord::RecordInvalid) end # Crossover over tests here as injured must be answered as well for no error it "must be answered if ever served in the forces as a regular" do expect do - CaseLog.create!(armedforces: "A current or former regular in the UK Armed Forces (excluding National Service)", - leftreg: "Yes", - reservist: "Yes", - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(armedforces: "A current or former regular in the UK Armed Forces (excluding National Service)", + leftreg: "Yes", + reservist: "Yes", + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) end end end @@ -471,7 +481,7 @@ RSpec.describe Form, type: :model do context "household_member_validations" do it "validate that persons aged under 16 must have relationship Child" do expect { - CaseLog.create!( + described_class.create!( age2: 14, relat2: "Partner", owning_organisation: owning_organisation, @@ -482,7 +492,7 @@ RSpec.describe Form, type: :model do it "validate that persons aged over 70 must be retired" do expect { - CaseLog.create!( + described_class.create!( age2: 71, ecstat2: "Full-time - 30 hours or more", owning_organisation: owning_organisation, @@ -493,7 +503,7 @@ RSpec.describe Form, type: :model do it "validate that a male, retired persons must be over 65" do expect { - CaseLog.create!( + described_class.create!( age2: 64, sex2: "Male", ecstat2: "Retired", @@ -505,7 +515,7 @@ RSpec.describe Form, type: :model do it "validate that a female, retired persons must be over 60" do expect { - CaseLog.create!( + described_class.create!( age2: 59, sex2: "Female", ecstat2: "Retired", @@ -517,7 +527,7 @@ RSpec.describe Form, type: :model do it "validate that persons aged under 16 must be a child (economically speaking)" do expect { - CaseLog.create!( + described_class.create!( age2: 15, ecstat2: "Full-time - 30 hours or more", owning_organisation: owning_organisation, @@ -528,7 +538,7 @@ RSpec.describe Form, type: :model do it "validate that persons aged between 16 and 19 that are a child must be a full time student or economic status refused" do expect { - CaseLog.create!( + described_class.create!( age2: 17, relat2: "Child - includes young adult and grown-up", ecstat2: "Full-time - 30 hours or more", @@ -540,7 +550,7 @@ RSpec.describe Form, type: :model do it "validate that persons aged under 16 must be a child relationship" do expect { - CaseLog.create!( + described_class.create!( age2: 15, relat2: "Partner", owning_organisation: owning_organisation, @@ -551,7 +561,7 @@ RSpec.describe Form, type: :model do it "validate that no more than 1 partner relationship exists" do expect { - CaseLog.create!( + described_class.create!( relat2: "Partner", relat3: "Partner", owning_organisation: owning_organisation, @@ -564,33 +574,33 @@ RSpec.describe Form, type: :model do context "other tenancy type validation" do it "must be provided if tenancy type was given as other" do expect { - CaseLog.create!(tenancy: "Other", - tenancyother: nil, - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(tenancy: "Other", + tenancyother: nil, + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.to raise_error(ActiveRecord::RecordInvalid) expect { - CaseLog.create!(tenancy: "Other", - tenancyother: "type", - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(tenancy: "Other", + tenancyother: "type", + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.not_to raise_error end it "must not be provided if tenancy type is not other" do expect { - CaseLog.create!(tenancy: "Secure (including flexible)", - tenancyother: "the other reason provided", - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(tenancy: "Secure (including flexible)", + tenancyother: "the other reason provided", + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.to raise_error(ActiveRecord::RecordInvalid) expect { - CaseLog.create!(tenancy: "Secure (including flexible)", - tenancyother: nil, - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(tenancy: "Secure (including flexible)", + tenancyother: nil, + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.not_to raise_error end end @@ -598,7 +608,7 @@ RSpec.describe Form, type: :model do context "income ranges" do it "validates net income maximum" do expect { - CaseLog.create!( + described_class.create!( ecstat1: "Full-time - 30 hours or more", earnings: 5000, incfreq: "Weekly", @@ -610,7 +620,7 @@ RSpec.describe Form, type: :model do it "validates net income minimum" do expect { - CaseLog.create!( + described_class.create!( ecstat1: "Full-time - 30 hours or more", earnings: 1, incfreq: "Weekly", @@ -654,7 +664,7 @@ RSpec.describe Form, type: :model do context "major repairs date" do it "cannot be later than the tenancy start date" do expect { - CaseLog.create!( + described_class.create!( mrcdate: Date.new(2021, 10, 10), startdate: Date.new(2021, 10, 9), owning_organisation: owning_organisation, @@ -663,7 +673,7 @@ RSpec.describe Form, type: :model do }.to raise_error(ActiveRecord::RecordInvalid) expect { - CaseLog.create!( + described_class.create!( mrcdate: Date.new(2021, 10, 9), startdate: Date.new(2021, 10, 10), owning_organisation: owning_organisation, @@ -674,7 +684,7 @@ RSpec.describe Form, type: :model do it "must not be completed if reason for vacancy is first let" do expect { - CaseLog.create!( + described_class.create!( mrcdate: Date.new(2020, 10, 10), rsnvac: "First let of new-build property", owning_organisation: owning_organisation, @@ -683,7 +693,7 @@ RSpec.describe Form, type: :model do }.to raise_error(ActiveRecord::RecordInvalid) expect { - CaseLog.create!( + described_class.create!( mrcdate: Date.new(2020, 10, 10), rsnvac: "First let of conversion, rehabilitation or acquired property", owning_organisation: owning_organisation, @@ -692,7 +702,7 @@ RSpec.describe Form, type: :model do }.to raise_error(ActiveRecord::RecordInvalid) expect { - CaseLog.create!( + described_class.create!( mrcdate: Date.new(2020, 10, 10), rsnvac: "First let of leased property", owning_organisation: owning_organisation, @@ -703,7 +713,7 @@ RSpec.describe Form, type: :model do it "must have less than two years between the tenancy start date and major repairs date" do expect { - CaseLog.create!( + described_class.create!( startdate: Date.new(2021, 10, 10), mrcdate: Date.new(2017, 10, 10), owning_organisation: owning_organisation, @@ -716,7 +726,7 @@ RSpec.describe Form, type: :model do context "void date" do it "must have less than 10 years between the tenancy start date and void" do expect { - CaseLog.create!( + described_class.create!( startdate: Date.new(2021, 10, 10), property_void_date: Date.new(2009, 10, 10), owning_organisation: owning_organisation, @@ -725,7 +735,7 @@ RSpec.describe Form, type: :model do }.to raise_error(ActiveRecord::RecordInvalid) expect { - CaseLog.create!( + described_class.create!( startdate: Date.new(2021, 10, 10), property_void_date: Date.new(2015, 10, 10), owning_organisation: owning_organisation, @@ -736,7 +746,7 @@ RSpec.describe Form, type: :model do it "must be before the tenancy start date" do expect { - CaseLog.create!( + described_class.create!( startdate: Date.new(2021, 10, 10), property_void_date: Date.new(2021, 10, 11), owning_organisation: owning_organisation, @@ -745,7 +755,7 @@ RSpec.describe Form, type: :model do }.to raise_error(ActiveRecord::RecordInvalid) expect { - CaseLog.create!( + described_class.create!( startdate: Date.new(2021, 10, 10), property_void_date: Date.new(2019, 10, 10), owning_organisation: owning_organisation, @@ -756,7 +766,7 @@ RSpec.describe Form, type: :model do it "must be before major repairs date if major repairs date provided" do expect { - CaseLog.create!( + described_class.create!( startdate: Date.new(2021, 10, 10), mrcdate: Date.new(2019, 10, 10), property_void_date: Date.new(2019, 11, 11), @@ -770,52 +780,52 @@ RSpec.describe Form, type: :model do context "Validate pregnancy questions" do it "Cannot answer yes if no female tenants" do expect { - CaseLog.create!(preg_occ: "Yes", - sex1: "Male", - age1: 20, - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(preg_occ: "Yes", + sex1: "Male", + age1: 20, + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.to raise_error(ActiveRecord::RecordInvalid) end it "Cannot answer yes if no female tenants within age range" do expect { - CaseLog.create!(preg_occ: "Yes", - sex1: "Female", - age1: 51, - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(preg_occ: "Yes", + sex1: "Female", + age1: 51, + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.to raise_error(ActiveRecord::RecordInvalid) end it "Cannot answer prefer not to say if no valid tenants" do expect { - CaseLog.create!(preg_occ: "Prefer not to say", - sex1: "Male", - age1: 20, - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(preg_occ: "Prefer not to say", + sex1: "Male", + age1: 20, + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.to raise_error(ActiveRecord::RecordInvalid) end it "Can answer yes if valid tenants" do expect { - CaseLog.create!(preg_occ: "Yes", - sex1: "Female", - age1: 20, - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(preg_occ: "Yes", + sex1: "Female", + age1: 20, + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.not_to raise_error end it "Can answer yes if valid second tenant" do expect { - CaseLog.create!(preg_occ: "Yes", - sex1: "Male", age1: 99, - sex2: "Female", - age2: 20, - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(preg_occ: "Yes", + sex1: "Male", age1: 99, + sex2: "Female", + age2: 20, + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.not_to raise_error end end @@ -823,17 +833,17 @@ RSpec.describe Form, type: :model do context "Validate type of unit" do it "Cannot be bedsit if no of bedrooms is greater than 1" do expect { - CaseLog.create!(unittype_gn: "Bedsit", - beds: 2, - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(unittype_gn: "Bedsit", + beds: 2, + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.to raise_error(ActiveRecord::RecordInvalid) expect { - CaseLog.create!(unittype_gn: "Bedsit", - beds: 1, - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(unittype_gn: "Bedsit", + beds: 1, + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.not_to raise_error end end @@ -841,17 +851,17 @@ RSpec.describe Form, type: :model do context "Validate local authority" do it "Has to be london if rent type london affordable rent" do expect { - CaseLog.create!(la: "Ashford", - rent_type: "London Affordable rent", - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(la: "Ashford", + rent_type: "London Affordable rent", + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.to raise_error(ActiveRecord::RecordInvalid) expect { - CaseLog.create!(la: "Westminster", - rent_type: "London Affordable rent", - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(la: "Westminster", + rent_type: "London Affordable rent", + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.not_to raise_error end end @@ -859,54 +869,54 @@ RSpec.describe Form, type: :model do context "For accessibility requirements" do it "validates that only one option can be selected" do expect { - CaseLog.create!(housingneeds_a: "Yes", - housingneeds_b: "Yes", - rent_type: "London Affordable rent", - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(housingneeds_a: "Yes", + housingneeds_b: "Yes", + rent_type: "London Affordable rent", + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.to raise_error(ActiveRecord::RecordInvalid) end it "validates that only one option a, b, or c can be selected in conjunction with f" do expect { - CaseLog.create!(housingneeds_a: "Yes", - housingneeds_f: "Yes", - rent_type: "London Affordable rent", - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(housingneeds_a: "Yes", + housingneeds_f: "Yes", + rent_type: "London Affordable rent", + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.not_to raise_error expect { - CaseLog.create!(housingneeds_b: "Yes", - housingneeds_f: "Yes", - rent_type: "London Affordable rent", - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(housingneeds_b: "Yes", + housingneeds_f: "Yes", + rent_type: "London Affordable rent", + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.not_to raise_error expect { - CaseLog.create!(housingneeds_c: "Yes", - housingneeds_f: "Yes", - rent_type: "London Affordable rent", - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(housingneeds_c: "Yes", + housingneeds_f: "Yes", + rent_type: "London Affordable rent", + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.not_to raise_error expect { - CaseLog.create!(housingneeds_g: "Yes", - housingneeds_f: "Yes", - rent_type: "London Affordable rent", - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(housingneeds_g: "Yes", + housingneeds_f: "Yes", + rent_type: "London Affordable rent", + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.to raise_error(ActiveRecord::RecordInvalid) expect { - CaseLog.create!(housingneeds_a: "Yes", - housingneeds_b: "Yes", - housingneeds_f: "Yes", - rent_type: "London Affordable rent", - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(housingneeds_a: "Yes", + housingneeds_b: "Yes", + housingneeds_f: "Yes", + rent_type: "London Affordable rent", + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.to raise_error(ActiveRecord::RecordInvalid) end end @@ -914,19 +924,19 @@ RSpec.describe Form, type: :model do context "Validate reason for vacancy" do def check_rsnvac_validation(prevten) expect { - CaseLog.create!(rsnvac: "Relet to tenant who occupied same property as temporary accommodation", - prevten: prevten, - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(rsnvac: "Relet to tenant who occupied same property as temporary accommodation", + prevten: prevten, + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.to raise_error(ActiveRecord::RecordInvalid) end def check_rsnvac_referral_validation(referral) expect { - CaseLog.create!(rsnvac: "Relet to tenant who occupied same property as temporary accommodation", - referral: referral, - owning_organisation: owning_organisation, - managing_organisation: managing_organisation) + described_class.create!(rsnvac: "Relet to tenant who occupied same property as temporary accommodation", + referral: referral, + owning_organisation: owning_organisation, + managing_organisation: managing_organisation) }.to raise_error(ActiveRecord::RecordInvalid) end @@ -997,7 +1007,7 @@ RSpec.describe Form, type: :model do require "date" let(:organisation) { FactoryBot.create(:organisation, "Org type": "PRP") } let!(:case_log) do - CaseLog.create({ + described_class.create({ managing_organisation: organisation, owning_organisation: organisation, property_postcode: "M1 1AE", @@ -1074,7 +1084,7 @@ RSpec.describe Form, type: :model do end let!(:address_case_log) do - CaseLog.create({ + described_class.create({ managing_organisation: organisation, owning_organisation: organisation, postcode_known: "Yes", @@ -1138,7 +1148,7 @@ RSpec.describe Form, type: :model do context "rent and charges" do let!(:case_log) do - CaseLog.create({ + described_class.create({ managing_organisation: organisation, owning_organisation: organisation, brent: 5.77, @@ -1156,7 +1166,7 @@ RSpec.describe Form, type: :model do context "household members derived vars" do let!(:household_case_log) do - CaseLog.create({ + described_class.create({ managing_organisation: organisation, owning_organisation: organisation, other_hhmemb: 4, diff --git a/spec/models/validations/property_validations_spec.rb b/spec/models/validations/property_validations_spec.rb index d84dfecb0..15e981036 100644 --- a/spec/models/validations/property_validations_spec.rb +++ b/spec/models/validations/property_validations_spec.rb @@ -1,59 +1,39 @@ require "rails_helper" require_relative "../../request_helper" -RSpec.describe CaseLog do - let(:owning_organisation) { FactoryBot.create(:organisation) } - let(:managing_organisation) { owning_organisation } - - before do - RequestHelper.stub_http_requests - end - - describe "#new" do - it "raises an error when offered is present and invalid" do - expect { - described_class.create!( - offered: "random", - owning_organisation: owning_organisation, - managing_organisation: managing_organisation, - ) - }.to raise_error(ActiveRecord::RecordInvalid) - end - end -end - RSpec.describe Validations::PropertyValidations do - let(:subject) { subject_class.new } - let(:subject_class) { Class.new { include Validations::PropertyValidations } } + subject(:property_validator) { property_validator_class.new } + + let(:property_validator_class) { Class.new { include Validations::PropertyValidations } } let(:record) { FactoryBot.create(:case_log) } let(:expected_error) { I18n.t("validations.property.offered.relet_number") } describe "#validate_property_number_of_times_relet" do it "does not add an error if the record offered is missing" do record.offered = nil - subject.validate_property_number_of_times_relet(record) + property_validator.validate_property_number_of_times_relet(record) expect(record.errors).to be_empty end it "does not add an error if offered is valid (number between 0 and 20)" do record.offered = 0 - subject.validate_property_number_of_times_relet(record) + property_validator.validate_property_number_of_times_relet(record) expect(record.errors).to be_empty record.offered = 10 - subject.validate_property_number_of_times_relet(record) + property_validator.validate_property_number_of_times_relet(record) expect(record.errors).to be_empty record.offered = 20 - subject.validate_property_number_of_times_relet(record) + property_validator.validate_property_number_of_times_relet(record) expect(record.errors).to be_empty end it "does add an error when offered is invalid" do record.offered = "invalid" - subject.validate_property_number_of_times_relet(record) + property_validator.validate_property_number_of_times_relet(record) expect(record.errors).not_to be_empty expect(record.errors["offered"]).to include(match(expected_error)) record.offered = 21 - subject.validate_property_number_of_times_relet(record) + property_validator.validate_property_number_of_times_relet(record) expect(record.errors).not_to be_empty expect(record.errors["offered"]).to include(match(expected_error)) end diff --git a/spec/presenters/error_summary_full_messages_presenter_spec.rb b/spec/presenters/error_summary_full_messages_presenter_spec.rb index ab352e743..4535eebe3 100644 --- a/spec/presenters/error_summary_full_messages_presenter_spec.rb +++ b/spec/presenters/error_summary_full_messages_presenter_spec.rb @@ -1,12 +1,12 @@ require "rails_helper" RSpec.describe ErrorSummaryFullMessagesPresenter do - subject { described_class.new(error_messages) } + subject(:error_summary_presenter) { described_class.new(error_messages) } let(:error_messages) { { reset_password_token: %w[expired] } } let(:formatted_error_messages) { [[:reset_password_token, "Reset password token expired"]] } it "formats messages to include the attribute name" do - expect(subject.formatted_error_messages).to eq(formatted_error_messages) + expect(error_summary_presenter.formatted_error_messages).to eq(formatted_error_messages) end end diff --git a/spec/requests/auth/passwords_controller_spec.rb b/spec/requests/auth/passwords_controller_spec.rb index 72144e879..23a4b23d3 100644 --- a/spec/requests/auth/passwords_controller_spec.rb +++ b/spec/requests/auth/passwords_controller_spec.rb @@ -4,7 +4,7 @@ require_relative "../../support/devise" RSpec.describe Auth::PasswordsController, type: :request do let(:params) { { user: { email: email } } } let(:page) { Capybara::Node::Simple.new(response.body) } - let(:notify_client) { double(Notifications::Client) } + let(:notify_client) { instance_double(Notifications::Client) } before do allow_any_instance_of(DeviseNotifyMailer).to receive(:notify_client).and_return(notify_client)