Browse Source

Merge branch 'main' into CLDC-4429-alpine-image-vulnerabilities

CLDC-4429-test-code-scanner
Nat Dean-Lewis 2 weeks ago
parent
commit
5251eaa764
  1. 12
      app/models/form/lettings/pages/no_household_member_likely_to_be_pregnant_check.rb
  2. 4
      app/models/form/lettings/pages/property_local_authority.rb
  3. 2
      app/models/form/lettings/subsections/household_characteristics.rb
  4. 4
      app/models/form/sales/pages/property_local_authority.rb
  5. 11
      app/models/form/sales/questions/buyer_still_serving.rb
  6. 4
      docs/Gemfile.lock
  7. 24
      lib/tasks/remap_2025_hhregresstill_values.rake
  8. 72
      spec/models/form/lettings/pages/property_local_authority_spec.rb
  9. 61
      spec/models/form/sales/pages/property_local_authority_spec.rb
  10. 27
      spec/models/form/sales/questions/buyer_still_serving_spec.rb
  11. 2
      spec/requests/check_errors_controller_spec.rb

12
app/models/form/lettings/pages/no_household_member_likely_to_be_pregnant_check.rb

@ -2,7 +2,8 @@ class Form::Lettings::Pages::NoHouseholdMemberLikelyToBePregnantCheck < ::Form::
def initialize(id, hsh, subsection, person_index: 0) def initialize(id, hsh, subsection, person_index: 0)
super(id, hsh, subsection) super(id, hsh, subsection)
@copy_key = "lettings.soft_validations.pregnancy_value_check.no_household_member_likely_to_be_pregnant_check" @copy_key = "lettings.soft_validations.pregnancy_value_check.no_household_member_likely_to_be_pregnant_check"
@depends_on = [{ "no_household_member_likely_to_be_pregnant?" => true }] @person_index = person_index
@depends_on = depends_on
@title_text = { @title_text = {
"translation" => "forms.#{form.start_date.year}.#{@copy_key}.title_text", "translation" => "forms.#{form.start_date.year}.#{@copy_key}.title_text",
"arguments" => [], "arguments" => [],
@ -11,7 +12,14 @@ class Form::Lettings::Pages::NoHouseholdMemberLikelyToBePregnantCheck < ::Form::
"translation" => "forms.#{form.start_date.year}.#{@copy_key}.informative_text", "translation" => "forms.#{form.start_date.year}.#{@copy_key}.informative_text",
"arguments" => [], "arguments" => [],
} }
@person_index = person_index end
def depends_on
if @person_index >= 2
[{ "no_household_member_likely_to_be_pregnant?" => true, "details_known_#{@person_index}" => 0 }]
else
[{ "no_household_member_likely_to_be_pregnant?" => true }]
end
end end
def questions def questions

4
app/models/form/lettings/pages/property_local_authority.rb

@ -3,8 +3,8 @@ class Form::Lettings::Pages::PropertyLocalAuthority < ::Form::Page
super super
@id = "property_local_authority" @id = "property_local_authority"
@depends_on = [ @depends_on = [
{ "is_la_inferred" => false, "is_general_needs?" => true, "form.start_year_2024_or_later?" => false }, { "is_la_inferred" => false, "is_general_needs?" => true, "form.start_year_2025_or_later?" => false, "address_search_given?" => true },
{ "is_la_inferred" => false, "is_general_needs?" => true, "form.start_year_2024_or_later?" => true, "address_search_given?" => true }, { "is_la_inferred" => false, "is_general_needs?" => true, "form.start_year_2025_or_later?" => true },
] ]
end end

2
app/models/form/lettings/subsections/household_characteristics.rb

@ -16,7 +16,7 @@ class Form::Lettings::Subsections::HouseholdCharacteristics < ::Form::Subsection
Form::Lettings::Pages::LeadTenantAge.new(nil, nil, self), Form::Lettings::Pages::LeadTenantAge.new(nil, nil, self),
(Form::Lettings::Pages::NoFemalesPregnantHouseholdLeadAgeValueCheck.new(nil, nil, self) unless form.start_year_2026_or_later?), (Form::Lettings::Pages::NoFemalesPregnantHouseholdLeadAgeValueCheck.new(nil, nil, self) unless form.start_year_2026_or_later?),
(Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdLeadAgeValueCheck.new(nil, nil, self) unless form.start_year_2026_or_later?), (Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdLeadAgeValueCheck.new(nil, nil, self) unless form.start_year_2026_or_later?),
(Form::Lettings::Pages::NoHouseholdMemberLikelyToBePregnantCheck.new("no_household_member_likely_to_be_pregnant_lead_age_check", nil, self) if form.start_year_2026_or_later?), (Form::Lettings::Pages::NoHouseholdMemberLikelyToBePregnantCheck.new("no_household_member_likely_to_be_pregnant_lead_age_check", nil, self, person_index: 1) if form.start_year_2026_or_later?),
Form::Lettings::Pages::LeadTenantUnderRetirementValueCheck.new("age_lead_tenant_under_retirement_value_check", nil, self), Form::Lettings::Pages::LeadTenantUnderRetirementValueCheck.new("age_lead_tenant_under_retirement_value_check", nil, self),
Form::Lettings::Pages::LeadTenantOverRetirementValueCheck.new("age_lead_tenant_over_retirement_value_check", nil, self), Form::Lettings::Pages::LeadTenantOverRetirementValueCheck.new("age_lead_tenant_over_retirement_value_check", nil, self),
(Form::Lettings::Pages::LeadTenantSexRegisteredAtBirth.new(nil, nil, self) if form.start_year_2026_or_later?), (Form::Lettings::Pages::LeadTenantSexRegisteredAtBirth.new(nil, nil, self) if form.start_year_2026_or_later?),

4
app/models/form/sales/pages/property_local_authority.rb

@ -3,8 +3,8 @@ class Form::Sales::Pages::PropertyLocalAuthority < ::Form::Page
super super
@id = "property_local_authority" @id = "property_local_authority"
@depends_on = [ @depends_on = [
{ "is_la_inferred" => false, "form.start_year_2024_or_later?" => false }, { "is_la_inferred" => false, "form.start_year_2025_or_later?" => false, "address_search_given?" => true },
{ "is_la_inferred" => false, "form.start_year_2024_or_later?" => true, "address_search_given?" => true }, { "is_la_inferred" => false, "form.start_year_2025_or_later?" => true },
] ]
end end

11
app/models/form/sales/questions/buyer_still_serving.rb

@ -19,13 +19,18 @@ class Form::Sales::Questions::BuyerStillServing < ::Form::Question
else else
{ {
"4" => { "value" => "Yes" }, "4" => { "value" => "Yes" },
"5" => { "value" => "No" }, "5" => { "value" => "No - they left up to and including 2 years ago" },
"6" => { "value" => "Buyer prefers not to say" }, "6" => { "value" => "No - they left more than 2 years ago" },
"divider" => { "value" => true }, "divider" => { "value" => true },
"7" => { "value" => "Don’t know" }, "9" => { "value" => "Don’t know" },
"10" => { "value" => "No" },
}.freeze }.freeze
end end
end end
def displayed_answer_options(_log, _user = nil)
answer_options.reject { |key, _v| key == "10" }
end
QUESTION_NUMBER_FROM_YEAR = { 2023 => 63, 2024 => 65, 2025 => 62, 2026 => 70 }.freeze QUESTION_NUMBER_FROM_YEAR = { 2023 => 63, 2024 => 65, 2025 => 62, 2026 => 70 }.freeze
end end

4
docs/Gemfile.lock

@ -13,8 +13,8 @@ GEM
minitest (>= 5.1, < 6) minitest (>= 5.1, < 6)
securerandom (>= 0.3) securerandom (>= 0.3)
tzinfo (~> 2.0, >= 2.0.5) tzinfo (~> 2.0, >= 2.0.5)
addressable (2.8.1) addressable (2.9.0)
public_suffix (>= 2.0.2, < 6.0) public_suffix (>= 2.0.2, < 8.0)
base64 (0.3.0) base64 (0.3.0)
benchmark (0.5.0) benchmark (0.5.0)
bigdecimal (4.0.1) bigdecimal (4.0.1)

24
lib/tasks/remap_2025_hhregresstill_values.rake

@ -0,0 +1,24 @@
desc "Remaps hhregresstill values for manually created 2025/26 sales logs"
task :remap_2025_hhregresstill_values, %i[before_datetime] => :environment do |_task, args|
usage_message = "Usage: rake remap_2025_hhregresstill_values['before_datetime']. before_datetime must be in format YYYY-MM-DDTHH:MM:SS"
raise usage_message if args[:before_datetime].blank?
before_datetime = Time.zone.parse(args[:before_datetime])
raise usage_message if before_datetime.nil?
logs = SalesLog.filter_by_year(2025).where(bulk_upload_id: nil).where(hhregresstill: [5, 6, 7]).where("created_at < ?", before_datetime)
puts "Updating #{logs.count} sales logs"
updated_ids = []
logs.find_each do |log|
new_value = case log.hhregresstill
when 5 then 10
when 6, 7 then 9
end
log.update!(hhregresstill: new_value)
updated_ids << log.id
end
puts "Updated log IDs: #{updated_ids.join(', ')}"
puts "Done"
end

72
spec/models/form/lettings/pages/property_local_authority_spec.rb

@ -35,66 +35,26 @@ RSpec.describe Form::Lettings::Pages::PropertyLocalAuthority, type: :model do
context "when routing to the page" do context "when routing to the page" do
let(:log) { build(:lettings_log) } let(:log) { build(:lettings_log) }
context "with form before 2024" do before do
before do allow(form).to receive(:start_year_2025_or_later?).and_return(true)
allow(form).to receive(:start_year_2024_or_later?).and_return(false)
end
it "is routed to when la is not inferred and it is general needs log" do
log.needstype = 1
log.is_la_inferred = false
expect(page).to be_routed_to(log, nil)
end
it "is not routed to when la is inferred" do
log.needstype = 1
log.is_la_inferred = true
expect(page).not_to be_routed_to(log, nil)
end
it "is not routed to when it's a supported housing log" do
log.needstype = 2
log.is_la_inferred = false
expect(page).not_to be_routed_to(log, nil)
end
end end
context "with form after 2024" do it "is routed to when la is not inferred and it is general needs log" do
before do log.needstype = 1
allow(form).to receive(:start_year_2024_or_later?).and_return(true) log.is_la_inferred = false
end expect(page).to be_routed_to(log, nil)
end
it "is routed to when la is not inferred, it is general needs log and address search has been given" do
log.needstype = 1
log.is_la_inferred = false
log.address_line1_input = "1"
log.postcode_full_input = "A11AA"
expect(page).to be_routed_to(log, nil)
end
it "is not routed to when la is inferred" do
log.needstype = 1
log.is_la_inferred = true
log.address_line1_input = "1"
log.postcode_full_input = "A11AA"
expect(page).not_to be_routed_to(log, nil)
end
it "is not routed to when it's a supported housing log" do it "is not routed to when la is inferred" do
log.needstype = 2 log.needstype = 1
log.is_la_inferred = false log.is_la_inferred = true
log.address_line1_input = "1" expect(page).not_to be_routed_to(log, nil)
log.postcode_full_input = "A11AA" end
expect(page).not_to be_routed_to(log, nil)
end
it "is not routed to when address search is not given" do it "is not routed to when it's a supported housing log" do
log.needstype = 1 log.needstype = 2
log.is_la_inferred = false log.is_la_inferred = false
log.address_line1_input = nil expect(page).not_to be_routed_to(log, nil)
log.postcode_full_input = "A11AA"
expect(page).not_to be_routed_to(log, nil)
end
end end
end end
end end

61
spec/models/form/sales/pages/property_local_authority_spec.rb

@ -17,18 +17,8 @@ RSpec.describe Form::Sales::Pages::PropertyLocalAuthority, type: :model do
expect(page.subsection).to eq(subsection) expect(page.subsection).to eq(subsection)
end end
describe "has correct questions" do it "has correct questions" do
context "when 2023" do expect(page.questions.map(&:id)).to eq(%w[la])
let(:start_date) { Time.utc(2023, 2, 8) }
it "has correct questions" do
expect(page.questions.map(&:id)).to eq(
%w[
la
],
)
end
end
end end
it "has the correct id" do it "has the correct id" do
@ -42,47 +32,18 @@ RSpec.describe Form::Sales::Pages::PropertyLocalAuthority, type: :model do
context "when routing to the page" do context "when routing to the page" do
let(:log) { build(:sales_log) } let(:log) { build(:sales_log) }
context "with form before 2024" do before do
before do allow(form).to receive(:start_year_2025_or_later?).and_return(true)
allow(form).to receive(:start_year_2024_or_later?).and_return(false)
end
it "is routed to when la is not inferred" do
log.is_la_inferred = false
expect(page).to be_routed_to(log, nil)
end
it "is not routed to when la is inferred" do
log.is_la_inferred = true
expect(page).not_to be_routed_to(log, nil)
end
end end
context "with form after 2024" do it "is routed to when la is not inferred" do
before do log.is_la_inferred = false
allow(form).to receive(:start_year_2024_or_later?).and_return(true) expect(page).to be_routed_to(log, nil)
end end
it "is routed to when la is not inferred and address search has been given" do
log.is_la_inferred = false
log.address_line1_input = "1"
log.postcode_full_input = "A11AA"
expect(page).to be_routed_to(log, nil)
end
it "is not routed to when la is inferred" do
log.is_la_inferred = true
log.address_line1_input = "1"
log.postcode_full_input = "A11AA"
expect(page).not_to be_routed_to(log, nil)
end
it "is not routed to when address search is not given" do it "is not routed to when la is inferred" do
log.is_la_inferred = false log.is_la_inferred = true
log.address_line1_input = nil expect(page).not_to be_routed_to(log, nil)
log.postcode_full_input = "A11AA"
expect(page).not_to be_routed_to(log, nil)
end
end end
end end
end end

27
spec/models/form/sales/questions/buyer_still_serving_spec.rb

@ -32,10 +32,21 @@ RSpec.describe Form::Sales::Questions::BuyerStillServing, type: :model do
it "has the correct answer_options" do it "has the correct answer_options" do
expect(question.answer_options).to eq({ expect(question.answer_options).to eq({
"4" => { "value" => "Yes" }, "4" => { "value" => "Yes" },
"5" => { "value" => "No" }, "5" => { "value" => "No - they left up to and including 2 years ago" },
"6" => { "value" => "Buyer prefers not to say" }, "6" => { "value" => "No - they left more than 2 years ago" },
"divider" => { "value" => true }, "divider" => { "value" => true },
"7" => { "value" => "Don’t know" }, "9" => { "value" => "Don’t know" },
"10" => { "value" => "No" },
})
end
it "has the correct displayed_answer_options" do
expect(question.displayed_answer_options(nil)).to eq({
"4" => { "value" => "Yes" },
"5" => { "value" => "No - they left up to and including 2 years ago" },
"6" => { "value" => "No - they left more than 2 years ago" },
"divider" => { "value" => true },
"9" => { "value" => "Don’t know" },
}) })
end end
end end
@ -52,5 +63,15 @@ RSpec.describe Form::Sales::Questions::BuyerStillServing, type: :model do
"9" => { "value" => "Don’t know" }, "9" => { "value" => "Don’t know" },
}) })
end end
it "has the correct displayed_answer_options" do
expect(question.displayed_answer_options(nil)).to eq({
"4" => { "value" => "Yes" },
"5" => { "value" => "No - they left up to and including 2 years ago" },
"6" => { "value" => "No - they left more than 2 years ago" },
"divider" => { "value" => true },
"9" => { "value" => "Don’t know" },
})
end
end end
end end

2
spec/requests/check_errors_controller_spec.rb

@ -84,7 +84,7 @@ RSpec.describe CheckErrorsController, type: :request do
end end
it "displays correct clear and change links" do it "displays correct clear and change links" do
expect(page.all(:button, value: "Clear").count).to eq(1) expect(page.all(:button, value: "Clear").count).to eq(2)
expect(page).to have_link("Change", count: 1) expect(page).to have_link("Change", count: 1)
expect(page).to have_button("Clear all") expect(page).to have_button("Clear all")
end end

Loading…
Cancel
Save