|
|
|
require "rails_helper"
|
|
|
|
|
|
|
|
RSpec.describe Validations::SoftValidations do
|
|
|
|
let(:organisation) { FactoryBot.build(:organisation, provider_type: "PRP", id: 123) }
|
|
|
|
let(:record) { FactoryBot.build(:lettings_log, owning_organisation: organisation) }
|
|
|
|
|
|
|
|
describe "rent min max validations" do
|
|
|
|
before do
|
|
|
|
LaRentRange.create!(
|
|
|
|
ranges_rent_id: "1",
|
|
|
|
la: "E07000223",
|
|
|
|
beds: 1,
|
|
|
|
lettype: 1,
|
|
|
|
soft_min: 12.41,
|
|
|
|
soft_max: 89.54,
|
|
|
|
hard_min: 9.87,
|
|
|
|
hard_max: 100.99,
|
|
|
|
start_year: 2021,
|
|
|
|
)
|
|
|
|
|
|
|
|
record.la = "E07000223"
|
|
|
|
record.needstype = 1
|
|
|
|
record.rent_type = 0
|
|
|
|
record.beds = 1
|
|
|
|
record.period = 1
|
|
|
|
record.startdate = Time.zone.local(2021, 10, 10)
|
|
|
|
end
|
|
|
|
|
|
|
|
context "when validating soft min" do
|
|
|
|
before do
|
|
|
|
record.brent = 11
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns out of soft min range if no startdate is given" do
|
|
|
|
record.startdate = nil
|
|
|
|
expect(record)
|
|
|
|
.not_to be_rent_in_soft_min_range
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns out of soft min range if no brent is given" do
|
|
|
|
record.brent = nil
|
|
|
|
expect(record)
|
|
|
|
.not_to be_rent_in_soft_min_range
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns true if weekly rent is in soft min range" do
|
|
|
|
expect(record)
|
|
|
|
.to be_rent_in_soft_min_range
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context "when validating soft max" do
|
|
|
|
before do
|
|
|
|
record.brent = 90
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns out of soft max range if no startdate is given" do
|
|
|
|
record.startdate = nil
|
|
|
|
expect(record)
|
|
|
|
.not_to be_rent_in_soft_max_range
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns out of soft max range if no brent is given" do
|
|
|
|
record.brent = nil
|
|
|
|
expect(record)
|
|
|
|
.not_to be_rent_in_soft_max_range
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns true if weekly rent is in soft max range" do
|
|
|
|
expect(record)
|
|
|
|
.to be_rent_in_soft_max_range
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe "retirement soft validations" do
|
|
|
|
before do
|
|
|
|
record.age1 = age1
|
|
|
|
record.ecstat1 = ecstat1
|
|
|
|
end
|
|
|
|
|
|
|
|
context "when the tenant is under the expected retirement age" do
|
|
|
|
let(:age1) { 60 }
|
|
|
|
|
|
|
|
context "and the tenant's economic status is nil" do
|
|
|
|
let(:ecstat1) { nil }
|
|
|
|
|
|
|
|
it "does not show the interruption screen" do
|
|
|
|
expect(record).not_to be_person_1_retired_under_soft_min_age
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context "and the tenant is retired" do
|
|
|
|
let(:ecstat1) { 5 }
|
|
|
|
|
|
|
|
it "does show the interruption screen" do
|
|
|
|
expect(record).to be_person_1_retired_under_soft_min_age
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context "and the tenant is not retired" do
|
|
|
|
let(:ecstat1) { 3 }
|
|
|
|
|
|
|
|
it "does not show the interruption screen" do
|
|
|
|
expect(record).not_to be_person_1_retired_under_soft_min_age
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context "and the tenant prefers not to say" do
|
|
|
|
let(:ecstat1) { 10 }
|
|
|
|
|
|
|
|
it "does not show the interruption screen" do
|
|
|
|
expect(record).not_to be_person_1_retired_under_soft_min_age
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context "when the tenant is over the expected retirement age" do
|
|
|
|
let(:age1) { 70 }
|
|
|
|
|
|
|
|
context "and the tenant's economic status is nil" do
|
|
|
|
let(:ecstat1) { nil }
|
|
|
|
|
|
|
|
it "does not show the interruption screen" do
|
|
|
|
expect(record).not_to be_person_1_not_retired_over_soft_max_age
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context "and the tenant is retired" do
|
|
|
|
let(:ecstat1) { 5 }
|
|
|
|
|
|
|
|
it "does not show the interruption screen" do
|
|
|
|
expect(record).not_to be_person_1_not_retired_over_soft_max_age
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context "and the tenant is not retired" do
|
|
|
|
let(:ecstat1) { 3 }
|
|
|
|
|
|
|
|
it "does show the interruption screen" do
|
|
|
|
expect(record).to be_person_1_not_retired_over_soft_max_age
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context "and the tenant prefers not to say" do
|
|
|
|
let(:ecstat1) { 10 }
|
|
|
|
|
|
|
|
it "does not show the interruption screen" do
|
|
|
|
expect(record).not_to be_person_1_not_retired_over_soft_max_age
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe "pregnancy soft validations" do
|
|
|
|
context "when all tenants are male" do
|
|
|
|
it "shows the interruption screen" do
|
|
|
|
record.age1 = 43
|
|
|
|
record.sex1 = "M"
|
|
|
|
record.preg_occ = 1
|
|
|
|
record.hhmemb = 1
|
|
|
|
record.age1_known = 0
|
|
|
|
expect(record.all_male_tenants_in_a_pregnant_household?).to be true
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context "when there all tenants are male and age of tenants is unknown" do
|
|
|
|
it "shows the interruption screen" do
|
|
|
|
record.sex1 = "M"
|
|
|
|
record.preg_occ = 1
|
|
|
|
record.hhmemb = 1
|
|
|
|
record.age1_known = 1
|
|
|
|
expect(record.all_male_tenants_in_a_pregnant_household?).to be true
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context "when all tenants are male and household members are over 8" do
|
|
|
|
it "does not show the interruption screen" do
|
|
|
|
(1..8).each do |n|
|
|
|
|
record.send("sex#{n}=", "M")
|
|
|
|
record.send("age#{n}=", 30)
|
|
|
|
record.send("age#{n}_known=", 0)
|
|
|
|
record.send("details_known_#{n}=", 0) unless n == 1
|
|
|
|
end
|
|
|
|
record.preg_occ = 1
|
|
|
|
record.hhmemb = 9
|
|
|
|
expect(record.all_male_tenants_in_a_pregnant_household?).to be false
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context "when female tenants are under 16" do
|
|
|
|
it "shows the interruption screen" do
|
|
|
|
record.age2 = 14
|
|
|
|
record.sex2 = "F"
|
|
|
|
record.preg_occ = 1
|
|
|
|
record.hhmemb = 2
|
|
|
|
record.details_known_2 = 0
|
|
|
|
record.age2_known = 0
|
|
|
|
record.age1 = 18
|
|
|
|
record.sex1 = "M"
|
|
|
|
record.age1_known = 0
|
|
|
|
expect(record.female_in_pregnant_household_in_soft_validation_range?).to be true
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context "when female tenants are over 50" do
|
|
|
|
it "shows the interruption screen" do
|
|
|
|
record.age1 = 54
|
|
|
|
record.sex1 = "F"
|
|
|
|
record.preg_occ = 1
|
|
|
|
record.hhmemb = 1
|
|
|
|
record.age1_known = 0
|
|
|
|
expect(record.female_in_pregnant_household_in_soft_validation_range?).to be true
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context "when female tenants are outside of soft validation ranges" do
|
|
|
|
it "does not show the interruption screen" do
|
|
|
|
record.age1 = 44
|
|
|
|
record.sex1 = "F"
|
|
|
|
record.preg_occ = 1
|
|
|
|
record.hhmemb = 1
|
|
|
|
expect(record.all_male_tenants_in_a_pregnant_household?).to be false
|
|
|
|
expect(record.female_in_pregnant_household_in_soft_validation_range?).to be false
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context "when the information about the tenants is not given" do
|
|
|
|
it "does not show the interruption screen" do
|
|
|
|
record.preg_occ = 1
|
|
|
|
record.hhmemb = 2
|
|
|
|
expect(record.all_male_tenants_in_a_pregnant_household?).to be false
|
|
|
|
expect(record.female_in_pregnant_household_in_soft_validation_range?).to be false
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context "when number of household members is over 8" do
|
|
|
|
it "does not show the interruption screen" do
|
|
|
|
(1..8).each do |n|
|
|
|
|
record.send("sex#{n}=", "F")
|
|
|
|
record.send("age#{n}=", 50)
|
|
|
|
record.send("age#{n}_known=", 0)
|
|
|
|
record.send("details_known_#{n}=", 0) unless n == 1
|
|
|
|
end
|
|
|
|
record.preg_occ = 1
|
|
|
|
record.hhmemb = 9
|
|
|
|
expect(record.female_in_pregnant_household_in_soft_validation_range?).to be false
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe "major repairs date soft validations" do
|
|
|
|
context "when the major repairs date is within 10 years of the tenancy start date" do
|
|
|
|
it "shows the interruption screen" do
|
|
|
|
record.startdate = Time.zone.local(2022, 2, 1)
|
|
|
|
record.mrcdate = Time.zone.local(2013, 2, 1)
|
|
|
|
expect(record.major_repairs_date_in_soft_range?).to be true
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context "when the major repairs date is less than 2 years before the tenancy start date" do
|
|
|
|
it "does not show the interruption screen" do
|
|
|
|
record.startdate = Time.zone.local(2022, 2, 1)
|
|
|
|
record.mrcdate = Time.zone.local(2021, 2, 1)
|
|
|
|
expect(record.major_repairs_date_in_soft_range?).to be false
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe "void date soft validations" do
|
|
|
|
context "when the void date is within 10 years of the tenancy start date" do
|
|
|
|
it "shows the interruption screen" do
|
|
|
|
record.startdate = Time.zone.local(2022, 2, 1)
|
|
|
|
record.voiddate = Time.zone.local(2013, 2, 1)
|
|
|
|
expect(record.voiddate_in_soft_range?).to be true
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context "when the void date is less than 2 years before the tenancy start date" do
|
|
|
|
it "does not show the interruption screen" do
|
|
|
|
record.startdate = Time.zone.local(2022, 2, 1)
|
|
|
|
record.voiddate = Time.zone.local(2021, 2, 1)
|
|
|
|
expect(record.voiddate_in_soft_range?).to be false
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe "old persons shared ownership soft validations" do
|
|
|
|
context "when it is a joint purchase and both buyers are over 64" do
|
|
|
|
let(:record) { FactoryBot.build(:sales_log, jointpur: 1, age1: 65, age2: 66, type: 24) }
|
|
|
|
|
|
|
|
it "returns false" do
|
|
|
|
expect(record.buyers_age_for_old_persons_shared_ownership_invalid?).to be false
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context "when it is a joint purchase and first buyer is over 64" do
|
|
|
|
let(:record) { FactoryBot.build(:sales_log, jointpur: 1, age1: 65, age2: 40, type: 24) }
|
|
|
|
|
|
|
|
it "returns false" do
|
|
|
|
expect(record.buyers_age_for_old_persons_shared_ownership_invalid?).to be false
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context "when it is a joint purchase and second buyer is over 64" do
|
|
|
|
let(:record) { FactoryBot.build(:sales_log, jointpur: 1, age1: 43, age2: 64, type: 24) }
|
|
|
|
|
|
|
|
it "returns false" do
|
|
|
|
expect(record.buyers_age_for_old_persons_shared_ownership_invalid?).to be false
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context "when it is a joint purchase and neither of the buyers are over 64" do
|
|
|
|
let(:record) { FactoryBot.build(:sales_log, jointpur: 1, age1: 43, age2: 33, type: 24) }
|
|
|
|
|
|
|
|
it "returns true" do
|
|
|
|
expect(record.buyers_age_for_old_persons_shared_ownership_invalid?).to be true
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context "when it is a joint purchase and first buyer is under 64 and the second buyers' age is unknown" do
|
|
|
|
let(:record) { FactoryBot.build(:sales_log, jointpur: 1, age1: 43, age2_known: 1, type: 24) }
|
|
|
|
|
|
|
|
it "returns true" do
|
|
|
|
expect(record.buyers_age_for_old_persons_shared_ownership_invalid?).to be true
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context "when it is a joint purchase and neither of the buyers ages are known" do
|
|
|
|
let(:record) { FactoryBot.build(:sales_log, jointpur: 1, age1_known: 1, age2_known: 1, type: 24) }
|
|
|
|
|
|
|
|
it "returns true" do
|
|
|
|
expect(record.buyers_age_for_old_persons_shared_ownership_invalid?).to be true
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context "when it is not a joint purchase and the buyer is over 64" do
|
|
|
|
let(:record) { FactoryBot.build(:sales_log, jointpur: 2, age1: 70, type: 24) }
|
|
|
|
|
|
|
|
it "returns false" do
|
|
|
|
expect(record.buyers_age_for_old_persons_shared_ownership_invalid?).to be false
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context "when it is not a joint purchase and the buyer is under 64" do
|
|
|
|
let(:record) { FactoryBot.build(:sales_log, jointpur: 2, age1: 20, type: 24) }
|
|
|
|
|
|
|
|
it "returns true" do
|
|
|
|
expect(record.buyers_age_for_old_persons_shared_ownership_invalid?).to be true
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context "when it is not a joint purchase and the buyers age is not known" do
|
|
|
|
let(:record) { FactoryBot.build(:sales_log, jointpur: 2, age1_known: 1, type: 24) }
|
|
|
|
|
|
|
|
it "returns true" do
|
|
|
|
expect(record.buyers_age_for_old_persons_shared_ownership_invalid?).to be true
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe "#care_home_charge_expected_not_provided?" do
|
|
|
|
it "returns false if is_carehome is 'No'" do
|
|
|
|
record.period = 3
|
|
|
|
record.is_carehome = 0
|
|
|
|
record.chcharge = nil
|
|
|
|
|
|
|
|
expect(record).not_to be_care_home_charge_expected_not_provided
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns false if is_carehome is not given" do
|
|
|
|
record.period = 3
|
|
|
|
record.is_carehome = nil
|
|
|
|
record.chcharge = nil
|
|
|
|
|
|
|
|
expect(record).not_to be_care_home_charge_expected_not_provided
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns false if chcharge is given" do
|
|
|
|
record.period = 3
|
|
|
|
record.is_carehome = 1
|
|
|
|
record.chcharge = 40
|
|
|
|
|
|
|
|
expect(record).not_to be_care_home_charge_expected_not_provided
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns true if is_carehome is 'Yes' and chcharge is not given" do
|
|
|
|
record.period = 3
|
|
|
|
record.is_carehome = 1
|
|
|
|
record.chcharge = nil
|
|
|
|
|
|
|
|
expect(record).to be_care_home_charge_expected_not_provided
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe "#la_referral_for_general_needs?" do
|
|
|
|
it "returns false if needstype is 'Supported Housing'" do
|
|
|
|
record.needstype = 2
|
|
|
|
record.referral = 4
|
|
|
|
|
|
|
|
expect(record).not_to be_la_referral_for_general_needs
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns false if needstype is not given" do
|
|
|
|
record.needstype = nil
|
|
|
|
record.referral = 4
|
|
|
|
|
|
|
|
expect(record).not_to be_la_referral_for_general_needs
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns false if referral is not given" do
|
|
|
|
record.needstype = 1
|
|
|
|
record.referral = nil
|
|
|
|
|
|
|
|
expect(record).not_to be_la_referral_for_general_needs
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns true if needstype is 'General needs' and referral is 4" do
|
|
|
|
record.needstype = 1
|
|
|
|
record.referral = 4
|
|
|
|
|
|
|
|
expect(record).to be_la_referral_for_general_needs
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe "scharge_in_soft_max_range?" do
|
|
|
|
context "and organisation is PRP" do
|
|
|
|
before do
|
|
|
|
record.owning_organisation.update(provider_type: "PRP")
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns false if scharge is not given" do
|
|
|
|
record.scharge = nil
|
|
|
|
record.needstype = 1
|
|
|
|
record.period = 1
|
|
|
|
|
|
|
|
expect(record).not_to be_scharge_in_soft_max_range
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns false if period is not given" do
|
|
|
|
record.scharge = 201
|
|
|
|
record.needstype = 1
|
|
|
|
record.period = nil
|
|
|
|
|
|
|
|
expect(record).not_to be_scharge_in_soft_max_range
|
|
|
|
end
|
|
|
|
|
|
|
|
[{
|
|
|
|
period: { label: "weekly", value: 1 },
|
|
|
|
scharge: 34,
|
|
|
|
description: "under soft max (35)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "monthly", value: 4 },
|
|
|
|
scharge: 100,
|
|
|
|
description: "under soft max (35)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "every 2 weeks", value: 2 },
|
|
|
|
scharge: 69,
|
|
|
|
description: "under soft max (35)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "weekly", value: 1 },
|
|
|
|
scharge: 801,
|
|
|
|
description: "over hard max (800)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "monthly", value: 4 },
|
|
|
|
scharge: 3471,
|
|
|
|
description: "over hard max (800)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "every 2 weeks", value: 2 },
|
|
|
|
scharge: 1601,
|
|
|
|
description: "over hard max (800)",
|
|
|
|
}].each do |test_case|
|
|
|
|
it "returns false if scharge is #{test_case[:description]} for general needs #{test_case[:period][:label]}" do
|
|
|
|
record.scharge = test_case[:scharge]
|
|
|
|
record.needstype = 1
|
|
|
|
record.period = test_case[:period][:value]
|
|
|
|
|
|
|
|
expect(record).not_to be_scharge_in_soft_max_range
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
[{
|
|
|
|
period: { label: "weekly", value: 1 },
|
|
|
|
scharge: 199,
|
|
|
|
description: "under soft max (200)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "monthly", value: 4 },
|
|
|
|
scharge: 400,
|
|
|
|
description: "under soft max (200)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "every 2 weeks", value: 2 },
|
|
|
|
scharge: 399,
|
|
|
|
description: "under soft max (200)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "weekly", value: 1 },
|
|
|
|
scharge: 801,
|
|
|
|
description: "over hard max (800)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "monthly", value: 4 },
|
|
|
|
scharge: 3471,
|
|
|
|
description: "over hard max (800)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "every 2 weeks", value: 2 },
|
|
|
|
scharge: 1601,
|
|
|
|
description: "over hard max (800)",
|
|
|
|
}].each do |test_case|
|
|
|
|
it "returns false if scharge is #{test_case[:description]} for supported housing #{test_case[:period][:label]}" do
|
|
|
|
record.scharge = test_case[:scharge]
|
|
|
|
record.needstype = 2
|
|
|
|
record.period = test_case[:period][:value]
|
|
|
|
|
|
|
|
expect(record).not_to be_scharge_in_soft_max_range
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
[{
|
|
|
|
period: { label: "weekly", value: 1 },
|
|
|
|
scharge: 36,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "monthly", value: 4 },
|
|
|
|
scharge: 180,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "every 2 weeks", value: 2 },
|
|
|
|
scharge: 71,
|
|
|
|
}].each do |test_case|
|
|
|
|
it "returns true if scharge is over soft max for general needs #{test_case[:period][:label]} (35)" do
|
|
|
|
record.scharge = test_case[:scharge]
|
|
|
|
record.needstype = 1
|
|
|
|
record.period = test_case[:period][:value]
|
|
|
|
|
|
|
|
expect(record).to be_scharge_in_soft_max_range
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
[{
|
|
|
|
period: { label: "weekly", value: 1 },
|
|
|
|
scharge: 201,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "monthly", value: 4 },
|
|
|
|
scharge: 1000,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "every 2 weeks", value: 2 },
|
|
|
|
scharge: 401,
|
|
|
|
}].each do |test_case|
|
|
|
|
it "returns true if scharge is over soft max for supported housing #{test_case[:period][:label]} (200)" do
|
|
|
|
record.scharge = test_case[:scharge]
|
|
|
|
record.needstype = 2
|
|
|
|
record.period = test_case[:period][:value]
|
|
|
|
|
|
|
|
expect(record).to be_scharge_in_soft_max_range
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context "and organisation is LA" do
|
|
|
|
before do
|
|
|
|
record.owning_organisation.update(provider_type: "LA")
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns false if scharge is not given" do
|
|
|
|
record.scharge = nil
|
|
|
|
record.needstype = 1
|
|
|
|
record.period = 1
|
|
|
|
|
|
|
|
expect(record).not_to be_scharge_in_soft_max_range
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns false if period is not given" do
|
|
|
|
record.scharge = 201
|
|
|
|
record.needstype = 1
|
|
|
|
record.period = nil
|
|
|
|
|
|
|
|
expect(record).not_to be_scharge_in_soft_max_range
|
|
|
|
end
|
|
|
|
|
|
|
|
[{
|
|
|
|
period: { label: "weekly", value: 1 },
|
|
|
|
scharge: 24,
|
|
|
|
description: "under soft max (25)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "monthly", value: 4 },
|
|
|
|
scharge: 88,
|
|
|
|
description: "under soft max (25)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "every 2 weeks", value: 2 },
|
|
|
|
scharge: 49,
|
|
|
|
description: "under soft max (25)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "weekly", value: 1 },
|
|
|
|
scharge: 501,
|
|
|
|
description: "over hard max (500)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "monthly", value: 4 },
|
|
|
|
scharge: 2167,
|
|
|
|
description: "over hard max (500)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "every 2 weeks", value: 2 },
|
|
|
|
scharge: 1001,
|
|
|
|
description: "over hard max (500)",
|
|
|
|
}].each do |test_case|
|
|
|
|
it "returns false if scharge is #{test_case[:description]} for general needs #{test_case[:period][:label]}" do
|
|
|
|
record.scharge = test_case[:scharge]
|
|
|
|
record.needstype = 1
|
|
|
|
record.period = test_case[:period][:value]
|
|
|
|
|
|
|
|
expect(record).not_to be_scharge_in_soft_max_range
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
[{
|
|
|
|
period: { label: "weekly", value: 1 },
|
|
|
|
scharge: 99,
|
|
|
|
description: "under soft max (100)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "monthly", value: 4 },
|
|
|
|
scharge: 400,
|
|
|
|
description: "under soft max (100)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "every 2 weeks", value: 2 },
|
|
|
|
scharge: 199,
|
|
|
|
description: "under soft max (100)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "weekly", value: 1 },
|
|
|
|
scharge: 501,
|
|
|
|
description: "over hard max (500)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "monthly", value: 4 },
|
|
|
|
scharge: 2167,
|
|
|
|
description: "over hard max (500)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "every 2 weeks", value: 2 },
|
|
|
|
scharge: 1001,
|
|
|
|
description: "over hard max (500)",
|
|
|
|
}].each do |test_case|
|
|
|
|
it "returns false if scharge is #{test_case[:description]} for supported housing #{test_case[:period][:label]}" do
|
|
|
|
record.scharge = test_case[:scharge]
|
|
|
|
record.needstype = 2
|
|
|
|
record.period = test_case[:period][:value]
|
|
|
|
|
|
|
|
expect(record).not_to be_scharge_in_soft_max_range
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
[{
|
|
|
|
period: { label: "weekly", value: 1 },
|
|
|
|
scharge: 26,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "monthly", value: 4 },
|
|
|
|
scharge: 120,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "every 2 weeks", value: 2 },
|
|
|
|
scharge: 51,
|
|
|
|
}].each do |test_case|
|
|
|
|
it "returns true if scharge is over soft max for general needs #{test_case[:period][:label]} (25)" do
|
|
|
|
record.scharge = test_case[:scharge]
|
|
|
|
record.needstype = 1
|
|
|
|
record.period = test_case[:period][:value]
|
|
|
|
|
|
|
|
expect(record).to be_scharge_in_soft_max_range
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
[{
|
|
|
|
period: { label: "weekly", value: 1 },
|
|
|
|
scharge: 101,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "monthly", value: 4 },
|
|
|
|
scharge: 450,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "every 2 weeks", value: 2 },
|
|
|
|
scharge: 201,
|
|
|
|
}].each do |test_case|
|
|
|
|
it "returns true if scharge is over soft max for supported housing #{test_case[:period][:label]} (100)" do
|
|
|
|
record.scharge = test_case[:scharge]
|
|
|
|
record.needstype = 2
|
|
|
|
record.period = test_case[:period][:value]
|
|
|
|
|
|
|
|
expect(record).to be_scharge_in_soft_max_range
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe "pscharge_in_soft_max_range?" do
|
|
|
|
context "and organisation is PRP" do
|
|
|
|
before do
|
|
|
|
record.owning_organisation.update(provider_type: "PRP")
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns false if pscharge is not given" do
|
|
|
|
record.pscharge = nil
|
|
|
|
record.needstype = 1
|
|
|
|
record.period = 1
|
|
|
|
|
|
|
|
expect(record).not_to be_pscharge_in_soft_max_range
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns false if period is not given" do
|
|
|
|
record.pscharge = 201
|
|
|
|
record.needstype = 1
|
|
|
|
record.period = nil
|
|
|
|
|
|
|
|
expect(record).not_to be_pscharge_in_soft_max_range
|
|
|
|
end
|
|
|
|
|
|
|
|
[{
|
|
|
|
period: { label: "weekly", value: 1 },
|
|
|
|
pscharge: 34,
|
|
|
|
description: "under soft max (35)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "monthly", value: 4 },
|
|
|
|
pscharge: 100,
|
|
|
|
description: "under soft max (35)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "every 2 weeks", value: 2 },
|
|
|
|
pscharge: 69,
|
|
|
|
description: "under soft max (35)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "weekly", value: 1 },
|
|
|
|
pscharge: 701,
|
|
|
|
description: "over hard max (700)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "monthly", value: 4 },
|
|
|
|
pscharge: 3034,
|
|
|
|
description: "over hard max (700)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "every 2 weeks", value: 2 },
|
|
|
|
pscharge: 1401,
|
|
|
|
description: "over hard max (700)",
|
|
|
|
}].each do |test_case|
|
|
|
|
it "returns false if pscharge is #{test_case[:description]} for general needs #{test_case[:period][:label]}" do
|
|
|
|
record.pscharge = test_case[:pscharge]
|
|
|
|
record.needstype = 1
|
|
|
|
record.period = test_case[:period][:value]
|
|
|
|
|
|
|
|
expect(record).not_to be_pscharge_in_soft_max_range
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
[{
|
|
|
|
period: { label: "weekly", value: 1 },
|
|
|
|
pscharge: 99,
|
|
|
|
description: "under soft max (100)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "monthly", value: 4 },
|
|
|
|
pscharge: 400,
|
|
|
|
description: "under soft max (100)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "every 2 weeks", value: 2 },
|
|
|
|
pscharge: 199,
|
|
|
|
description: "under soft max (100)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "weekly", value: 1 },
|
|
|
|
pscharge: 701,
|
|
|
|
description: "over hard max (700)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "monthly", value: 4 },
|
|
|
|
pscharge: 3034,
|
|
|
|
description: "over hard max (700)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "every 2 weeks", value: 2 },
|
|
|
|
pscharge: 1401,
|
|
|
|
description: "over hard max (700)",
|
|
|
|
}].each do |test_case|
|
|
|
|
it "returns false if pscharge is #{test_case[:description]} for supported housing #{test_case[:period][:label]}" do
|
|
|
|
record.pscharge = test_case[:pscharge]
|
|
|
|
record.needstype = 2
|
|
|
|
record.period = test_case[:period][:value]
|
|
|
|
|
|
|
|
expect(record).not_to be_pscharge_in_soft_max_range
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
[{
|
|
|
|
period: { label: "weekly", value: 1 },
|
|
|
|
pscharge: 36,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "monthly", value: 4 },
|
|
|
|
pscharge: 180,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "every 2 weeks", value: 2 },
|
|
|
|
pscharge: 71,
|
|
|
|
}].each do |test_case|
|
|
|
|
it "returns true if pscharge is over soft max for general needs #{test_case[:period][:label]} (35)" do
|
|
|
|
record.pscharge = test_case[:pscharge]
|
|
|
|
record.needstype = 1
|
|
|
|
record.period = test_case[:period][:value]
|
|
|
|
|
|
|
|
expect(record).to be_pscharge_in_soft_max_range
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
[{
|
|
|
|
period: { label: "weekly", value: 1 },
|
|
|
|
pscharge: 101,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "monthly", value: 4 },
|
|
|
|
pscharge: 450,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "every 2 weeks", value: 2 },
|
|
|
|
pscharge: 201,
|
|
|
|
}].each do |test_case|
|
|
|
|
it "returns true if pscharge is over soft max for supported housing #{test_case[:period][:label]} (100)" do
|
|
|
|
record.pscharge = test_case[:pscharge]
|
|
|
|
record.needstype = 2
|
|
|
|
record.period = test_case[:period][:value]
|
|
|
|
|
|
|
|
expect(record).to be_pscharge_in_soft_max_range
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context "and organisation is LA" do
|
|
|
|
before do
|
|
|
|
record.owning_organisation.update(provider_type: "LA")
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns false if pscharge is not given" do
|
|
|
|
record.pscharge = nil
|
|
|
|
record.needstype = 1
|
|
|
|
record.period = 1
|
|
|
|
|
|
|
|
expect(record).not_to be_pscharge_in_soft_max_range
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns false if period is not given" do
|
|
|
|
record.pscharge = 201
|
|
|
|
record.needstype = 1
|
|
|
|
record.period = nil
|
|
|
|
|
|
|
|
expect(record).not_to be_pscharge_in_soft_max_range
|
|
|
|
end
|
|
|
|
|
|
|
|
[{
|
|
|
|
period: { label: "weekly", value: 1 },
|
|
|
|
pscharge: 24,
|
|
|
|
description: "under soft max (25)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "monthly", value: 4 },
|
|
|
|
pscharge: 88,
|
|
|
|
description: "under soft max (25)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "every 2 weeks", value: 2 },
|
|
|
|
pscharge: 49,
|
|
|
|
description: "under soft max (25)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "weekly", value: 1 },
|
|
|
|
pscharge: 201,
|
|
|
|
description: "over hard max (200)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "monthly", value: 4 },
|
|
|
|
pscharge: 867,
|
|
|
|
description: "over hard max (200)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "every 2 weeks", value: 2 },
|
|
|
|
pscharge: 401,
|
|
|
|
description: "over hard max (200)",
|
|
|
|
}].each do |test_case|
|
|
|
|
it "returns false if pscharge is #{test_case[:description]} for general needs #{test_case[:period][:label]}" do
|
|
|
|
record.pscharge = test_case[:pscharge]
|
|
|
|
record.needstype = 1
|
|
|
|
record.period = test_case[:period][:value]
|
|
|
|
|
|
|
|
expect(record).not_to be_pscharge_in_soft_max_range
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
[{
|
|
|
|
period: { label: "weekly", value: 1 },
|
|
|
|
pscharge: 74,
|
|
|
|
description: "under soft max (75)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "monthly", value: 4 },
|
|
|
|
pscharge: 250,
|
|
|
|
description: "under soft max (75)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "every 2 weeks", value: 2 },
|
|
|
|
pscharge: 149,
|
|
|
|
description: "under soft max (75)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "weekly", value: 1 },
|
|
|
|
pscharge: 201,
|
|
|
|
description: "over hard max (200)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "monthly", value: 4 },
|
|
|
|
pscharge: 867,
|
|
|
|
description: "over hard max (200)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "every 2 weeks", value: 2 },
|
|
|
|
pscharge: 401,
|
|
|
|
description: "over hard max (200)",
|
|
|
|
}].each do |test_case|
|
|
|
|
it "returns false if pscharge is #{test_case[:description]} for supported housing #{test_case[:period][:label]}" do
|
|
|
|
record.pscharge = test_case[:pscharge]
|
|
|
|
record.needstype = 2
|
|
|
|
record.period = test_case[:period][:value]
|
|
|
|
|
|
|
|
expect(record).not_to be_pscharge_in_soft_max_range
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
[{
|
|
|
|
period: { label: "weekly", value: 1 },
|
|
|
|
pscharge: 26,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "monthly", value: 4 },
|
|
|
|
pscharge: 120,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "every 2 weeks", value: 2 },
|
|
|
|
pscharge: 51,
|
|
|
|
}].each do |test_case|
|
|
|
|
it "returns true if pscharge is over soft max for general needs #{test_case[:period][:label]} (25)" do
|
|
|
|
record.pscharge = test_case[:pscharge]
|
|
|
|
record.needstype = 1
|
|
|
|
record.period = test_case[:period][:value]
|
|
|
|
|
|
|
|
expect(record).to be_pscharge_in_soft_max_range
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
[{
|
|
|
|
period: { label: "weekly", value: 1 },
|
|
|
|
pscharge: 76,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "monthly", value: 4 },
|
|
|
|
pscharge: 350,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "every 2 weeks", value: 2 },
|
|
|
|
pscharge: 151,
|
|
|
|
}].each do |test_case|
|
|
|
|
it "returns true if pscharge is over soft max for supported housing #{test_case[:period][:label]} (75)" do
|
|
|
|
record.pscharge = test_case[:pscharge]
|
|
|
|
record.needstype = 2
|
|
|
|
record.period = test_case[:period][:value]
|
|
|
|
|
|
|
|
expect(record).to be_pscharge_in_soft_max_range
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe "supcharg_in_soft_max_range?" do
|
|
|
|
context "and organisation is PRP" do
|
|
|
|
before do
|
|
|
|
record.owning_organisation.update(provider_type: "PRP")
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns false if supcharg is not given" do
|
|
|
|
record.supcharg = nil
|
|
|
|
record.needstype = 1
|
|
|
|
record.period = 1
|
|
|
|
|
|
|
|
expect(record).not_to be_supcharg_in_soft_max_range
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns false if period is not given" do
|
|
|
|
record.supcharg = 201
|
|
|
|
record.needstype = 1
|
|
|
|
record.period = nil
|
|
|
|
|
|
|
|
expect(record).not_to be_supcharg_in_soft_max_range
|
|
|
|
end
|
|
|
|
|
|
|
|
[{
|
|
|
|
period: { label: "weekly", value: 1 },
|
|
|
|
supcharg: 34,
|
|
|
|
description: "under soft max (35)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "monthly", value: 4 },
|
|
|
|
supcharg: 100,
|
|
|
|
description: "under soft max (35)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "every 2 weeks", value: 2 },
|
|
|
|
supcharg: 69,
|
|
|
|
description: "under soft max (35)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "weekly", value: 1 },
|
|
|
|
supcharg: 801,
|
|
|
|
description: "over hard max (800)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "monthly", value: 4 },
|
|
|
|
supcharg: 3467,
|
|
|
|
description: "over hard max (800)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "every 2 weeks", value: 2 },
|
|
|
|
supcharg: 1601,
|
|
|
|
description: "over hard max (800)",
|
|
|
|
}].each do |test_case|
|
|
|
|
it "returns false if supcharg is #{test_case[:description]} for general needs #{test_case[:period][:label]}" do
|
|
|
|
record.supcharg = test_case[:supcharg]
|
|
|
|
record.needstype = 1
|
|
|
|
record.period = test_case[:period][:value]
|
|
|
|
|
|
|
|
expect(record).not_to be_supcharg_in_soft_max_range
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
[{
|
|
|
|
period: { label: "weekly", value: 1 },
|
|
|
|
supcharg: 84,
|
|
|
|
description: "under soft max (85)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "monthly", value: 4 },
|
|
|
|
supcharg: 320,
|
|
|
|
description: "under soft max (85)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "every 2 weeks", value: 2 },
|
|
|
|
supcharg: 169,
|
|
|
|
description: "under soft max (85)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "weekly", value: 1 },
|
|
|
|
supcharg: 801,
|
|
|
|
description: "over hard max (800)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "monthly", value: 4 },
|
|
|
|
supcharg: 3467,
|
|
|
|
description: "over hard max (800)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "every 2 weeks", value: 2 },
|
|
|
|
supcharg: 1601,
|
|
|
|
description: "over hard max (800)",
|
|
|
|
}].each do |test_case|
|
|
|
|
it "returns false if supcharg is #{test_case[:description]} for supported housing #{test_case[:period][:label]}" do
|
|
|
|
record.supcharg = test_case[:supcharg]
|
|
|
|
record.needstype = 2
|
|
|
|
record.period = test_case[:period][:value]
|
|
|
|
|
|
|
|
expect(record).not_to be_supcharg_in_soft_max_range
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
[{
|
|
|
|
period: { label: "weekly", value: 1 },
|
|
|
|
supcharg: 36,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "monthly", value: 4 },
|
|
|
|
supcharg: 180,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "every 2 weeks", value: 2 },
|
|
|
|
supcharg: 71,
|
|
|
|
}].each do |test_case|
|
|
|
|
it "returns true if supcharg is over soft max for general needs #{test_case[:period][:label]} (35)" do
|
|
|
|
record.supcharg = test_case[:supcharg]
|
|
|
|
record.needstype = 1
|
|
|
|
record.period = test_case[:period][:value]
|
|
|
|
|
|
|
|
expect(record).to be_supcharg_in_soft_max_range
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
[{
|
|
|
|
period: { label: "weekly", value: 1 },
|
|
|
|
supcharg: 86,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "monthly", value: 4 },
|
|
|
|
supcharg: 400,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "every 2 weeks", value: 2 },
|
|
|
|
supcharg: 171,
|
|
|
|
}].each do |test_case|
|
|
|
|
it "returns true if supcharg is over soft max for supported housing #{test_case[:period][:label]} (85)" do
|
|
|
|
record.supcharg = test_case[:supcharg]
|
|
|
|
record.needstype = 2
|
|
|
|
record.period = test_case[:period][:value]
|
|
|
|
|
|
|
|
expect(record).to be_supcharg_in_soft_max_range
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context "and organisation is LA" do
|
|
|
|
before do
|
|
|
|
record.owning_organisation.update(provider_type: "LA")
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns false if supcharg is not given" do
|
|
|
|
record.supcharg = nil
|
|
|
|
record.needstype = 1
|
|
|
|
record.period = 1
|
|
|
|
|
|
|
|
expect(record).not_to be_supcharg_in_soft_max_range
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns false if period is not given" do
|
|
|
|
record.supcharg = 201
|
|
|
|
record.needstype = 1
|
|
|
|
record.period = nil
|
|
|
|
|
|
|
|
expect(record).not_to be_supcharg_in_soft_max_range
|
|
|
|
end
|
|
|
|
|
|
|
|
[{
|
|
|
|
period: { label: "weekly", value: 1 },
|
|
|
|
supcharg: 24,
|
|
|
|
description: "under soft max (25)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "monthly", value: 4 },
|
|
|
|
supcharg: 88,
|
|
|
|
description: "under soft max (25)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "every 2 weeks", value: 2 },
|
|
|
|
supcharg: 49,
|
|
|
|
description: "under soft max (25)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "weekly", value: 1 },
|
|
|
|
supcharg: 201,
|
|
|
|
description: "over hard max (200)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "monthly", value: 4 },
|
|
|
|
supcharg: 867,
|
|
|
|
description: "over hard max (200)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "every 2 weeks", value: 2 },
|
|
|
|
supcharg: 401,
|
|
|
|
description: "over hard max (200)",
|
|
|
|
}].each do |test_case|
|
|
|
|
it "returns false if supcharg is #{test_case[:description]} for general needs #{test_case[:period][:label]}" do
|
|
|
|
record.supcharg = test_case[:supcharg]
|
|
|
|
record.needstype = 1
|
|
|
|
record.period = test_case[:period][:value]
|
|
|
|
|
|
|
|
expect(record).not_to be_supcharg_in_soft_max_range
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
[{
|
|
|
|
period: { label: "weekly", value: 1 },
|
|
|
|
supcharg: 74,
|
|
|
|
description: "under soft max (75)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "monthly", value: 4 },
|
|
|
|
supcharg: 250,
|
|
|
|
description: "under soft max (75)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "every 2 weeks", value: 2 },
|
|
|
|
supcharg: 149,
|
|
|
|
description: "under soft max (75)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "weekly", value: 1 },
|
|
|
|
supcharg: 201,
|
|
|
|
description: "over hard max (200)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "monthly", value: 4 },
|
|
|
|
supcharg: 867,
|
|
|
|
description: "over hard max (200)",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "every 2 weeks", value: 2 },
|
|
|
|
supcharg: 401,
|
|
|
|
description: "over hard max (200)",
|
|
|
|
}].each do |test_case|
|
|
|
|
it "returns false if supcharg is #{test_case[:description]} for supported housing #{test_case[:period][:label]}" do
|
|
|
|
record.supcharg = test_case[:supcharg]
|
|
|
|
record.needstype = 2
|
|
|
|
record.period = test_case[:period][:value]
|
|
|
|
|
|
|
|
expect(record).not_to be_supcharg_in_soft_max_range
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
[{
|
|
|
|
period: { label: "weekly", value: 1 },
|
|
|
|
supcharg: 26,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "monthly", value: 4 },
|
|
|
|
supcharg: 120,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "every 2 weeks", value: 2 },
|
|
|
|
supcharg: 51,
|
|
|
|
}].each do |test_case|
|
|
|
|
it "returns true if supcharg is over soft max for general needs #{test_case[:period][:label]} (25)" do
|
|
|
|
record.supcharg = test_case[:supcharg]
|
|
|
|
record.needstype = 1
|
|
|
|
record.period = test_case[:period][:value]
|
|
|
|
|
|
|
|
expect(record).to be_supcharg_in_soft_max_range
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
[{
|
|
|
|
period: { label: "weekly", value: 1 },
|
|
|
|
supcharg: 76,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "monthly", value: 4 },
|
|
|
|
supcharg: 350,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
period: { label: "every 2 weeks", value: 2 },
|
|
|
|
supcharg: 151,
|
|
|
|
}].each do |test_case|
|
|
|
|
it "returns true if supcharg is over soft max for supported housing #{test_case[:period][:label]} (75)" do
|
|
|
|
record.supcharg = test_case[:supcharg]
|
|
|
|
record.needstype = 2
|
|
|
|
record.period = test_case[:period][:value]
|
|
|
|
|
|
|
|
expect(record).to be_supcharg_in_soft_max_range
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe "reasonother_might_be_existing_category?" do
|
|
|
|
it "returns true if reasonother is exactly in the 'likely existing category' list" do
|
|
|
|
record.reasonother = "Domestic Abuse"
|
|
|
|
|
|
|
|
expect(record).to be_reasonother_might_be_existing_category
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns true if any word of reasonother is exactly in the 'likely existing category' list" do
|
|
|
|
record.reasonother = "Was decanted from somewhere"
|
|
|
|
|
|
|
|
expect(record).to be_reasonother_might_be_existing_category
|
|
|
|
end
|
|
|
|
|
|
|
|
it "is not case sensitive when matching" do
|
|
|
|
record.reasonother = "domestic abuse"
|
|
|
|
|
|
|
|
expect(record).to be_reasonother_might_be_existing_category
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns false if no part of reasonother is in the 'likely existing category' list" do
|
|
|
|
record.reasonother = "other"
|
|
|
|
|
|
|
|
expect(record).not_to be_reasonother_might_be_existing_category
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns false if match to the 'likely existing category' list is only part of a word" do
|
|
|
|
record.reasonother = "wasdecanted"
|
|
|
|
|
|
|
|
expect(record).not_to be_reasonother_might_be_existing_category
|
|
|
|
end
|
|
|
|
|
|
|
|
it "ignores neighbouring non-alphabet for matching" do
|
|
|
|
record.reasonother = "1Domestic abuse."
|
|
|
|
|
|
|
|
expect(record).to be_reasonother_might_be_existing_category
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|