From ced73cb11e61bdcc479129eac4e526b2528232e9 Mon Sep 17 00:00:00 2001 From: natdeanlewissoftwire Date: Wed, 5 Apr 2023 11:16:39 +0100 Subject: [PATCH 1/5] feat: add max value check for buyer 1 --- .../pages/buyer1_income_max_value_check.rb | 27 +++++++++++++++++++ ...ck.rb => buyer1_income_min_value_check.rb} | 2 +- .../subsections/household_characteristics.rb | 2 +- .../income_benefits_and_savings.rb | 3 ++- .../sales/subsections/property_information.rb | 2 ++ .../validations/sales/soft_validations.rb | 6 +++++ config/locales/en.yml | 1 + ... => buyer1_income_min_value_check_spec.rb} | 6 ++--- ... => buyer1_income_min_value_check_spec.rb} | 2 +- .../household_characteristics_spec.rb | 4 +-- .../income_benefits_and_savings_spec.rb | 4 +-- 11 files changed, 48 insertions(+), 11 deletions(-) create mode 100644 app/models/form/sales/pages/buyer1_income_max_value_check.rb rename app/models/form/sales/pages/{buyer1_income_value_check.rb => buyer1_income_min_value_check.rb} (91%) rename spec/models/form/sales/pages/{buyer1_income_value_check_spec.rb => buyer1_income_min_value_check_spec.rb} (78%) rename spec/models/form/sales/questions/{buyer1_income_value_check_spec.rb => buyer1_income_min_value_check_spec.rb} (94%) diff --git a/app/models/form/sales/pages/buyer1_income_max_value_check.rb b/app/models/form/sales/pages/buyer1_income_max_value_check.rb new file mode 100644 index 000000000..38f7a95aa --- /dev/null +++ b/app/models/form/sales/pages/buyer1_income_max_value_check.rb @@ -0,0 +1,27 @@ +class Form::Sales::Pages::Buyer1IncomeMaxValueCheck < ::Form::Page + def initialize(id, hsh, subsection) + super + @depends_on = [ + { + "income1_over_soft_max?" => true, + }, + ] + @title_text = { + "translation" => "soft_validations.income.over_soft_max_for_la", + "arguments" => [ + { + "key" => "field_formatted_as_currency", + "arguments_for_key" => "income1", + "i18n_template" => "income", + } + ], + } + @informative_text = {} + end + + def questions + @questions ||= [ + Form::Sales::Questions::Buyer1IncomeValueCheck.new(nil, nil, self), + ] + end +end diff --git a/app/models/form/sales/pages/buyer1_income_value_check.rb b/app/models/form/sales/pages/buyer1_income_min_value_check.rb similarity index 91% rename from app/models/form/sales/pages/buyer1_income_value_check.rb rename to app/models/form/sales/pages/buyer1_income_min_value_check.rb index 48d8f5fff..08ec83d08 100644 --- a/app/models/form/sales/pages/buyer1_income_value_check.rb +++ b/app/models/form/sales/pages/buyer1_income_min_value_check.rb @@ -1,4 +1,4 @@ -class Form::Sales::Pages::Buyer1IncomeValueCheck < ::Form::Page +class Form::Sales::Pages::Buyer1IncomeMinValueCheck < ::Form::Page def initialize(id, hsh, subsection) super @depends_on = [ diff --git a/app/models/form/sales/subsections/household_characteristics.rb b/app/models/form/sales/subsections/household_characteristics.rb index 922d95edd..af85130b4 100644 --- a/app/models/form/sales/subsections/household_characteristics.rb +++ b/app/models/form/sales/subsections/household_characteristics.rb @@ -24,7 +24,7 @@ class Form::Sales::Subsections::HouseholdCharacteristics < ::Form::Subsection Form::Sales::Pages::Nationality1.new(nil, nil, self), Form::Sales::Pages::Buyer1WorkingSituation.new(nil, nil, self), Form::Sales::Pages::RetirementValueCheck.new("working_situation_1_retirement_value_check", nil, self, person_index: 1), - Form::Sales::Pages::Buyer1IncomeValueCheck.new("working_situation_buyer_1_income_value_check", nil, self), + Form::Sales::Pages::Buyer1IncomeMinValueCheck.new("working_situation_buyer_1_income_min_value_check", nil, self), Form::Sales::Pages::Buyer1LiveInProperty.new(nil, nil, self), Form::Sales::Pages::Buyer2RelationshipToBuyer1.new(nil, nil, self), Form::Sales::Pages::PersonStudentNotChildValueCheck.new("buyer_2_relationship_student_not_child_value_check", nil, self, person_index: 2), diff --git a/app/models/form/sales/subsections/income_benefits_and_savings.rb b/app/models/form/sales/subsections/income_benefits_and_savings.rb index 502b87fc9..293c11657 100644 --- a/app/models/form/sales/subsections/income_benefits_and_savings.rb +++ b/app/models/form/sales/subsections/income_benefits_and_savings.rb @@ -9,7 +9,8 @@ class Form::Sales::Subsections::IncomeBenefitsAndSavings < ::Form::Subsection def pages @pages ||= [ Form::Sales::Pages::Buyer1Income.new(nil, nil, self), - Form::Sales::Pages::Buyer1IncomeValueCheck.new("buyer_1_income_value_check", nil, self), + Form::Sales::Pages::Buyer1IncomeMinValueCheck.new("buyer_1_income_min_value_check", nil, self), + Form::Sales::Pages::Buyer1IncomeMaxValueCheck.new("buyer_1_income_max_value_check", nil, self), Form::Sales::Pages::MortgageValueCheck.new("buyer_1_income_mortgage_value_check", nil, self, 1), Form::Sales::Pages::Buyer1Mortgage.new(nil, nil, self), Form::Sales::Pages::MortgageValueCheck.new("buyer_1_mortgage_value_check", nil, self, 1), diff --git a/app/models/form/sales/subsections/property_information.rb b/app/models/form/sales/subsections/property_information.rb index cca34a764..ea4b51deb 100644 --- a/app/models/form/sales/subsections/property_information.rb +++ b/app/models/form/sales/subsections/property_information.rb @@ -28,6 +28,7 @@ class Form::Sales::Subsections::PropertyInformation < ::Form::Subsection Form::Sales::Pages::UprnConfirmation.new(nil, nil, self), Form::Sales::Pages::Address.new(nil, nil, self), Form::Sales::Pages::PropertyLocalAuthority.new(nil, nil, self), + Form::Sales::Pages::Buyer1IncomeMaxValueCheck.new("local_authority_buyer_1_income_max_value_check", nil, self), ] end end @@ -37,6 +38,7 @@ class Form::Sales::Subsections::PropertyInformation < ::Form::Subsection [ Form::Sales::Pages::Postcode.new(nil, nil, self), Form::Sales::Pages::PropertyLocalAuthority.new(nil, nil, self), + Form::Sales::Pages::Buyer1IncomeMaxValueCheck.new("local_authority_buyer_1_income_max_value_check", nil, self), ] end end diff --git a/app/models/validations/sales/soft_validations.rb b/app/models/validations/sales/soft_validations.rb index d72118d05..e439c7369 100644 --- a/app/models/validations/sales/soft_validations.rb +++ b/app/models/validations/sales/soft_validations.rb @@ -19,6 +19,12 @@ module Validations::Sales::SoftValidations income2 < ALLOWED_INCOME_RANGES_SALES[ecstat2][:soft_min] end + def income1_over_soft_max? + return unless income1 && la && discounted_ownership_sale? + + (london_property? && income1 > 90_000) || (property_not_in_london? && income1 > 80_000) + end + def staircase_bought_above_fifty? stairbought && stairbought > 50 end diff --git a/config/locales/en.yml b/config/locales/en.yml index bcfe32f46..c44fadb8a 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -505,6 +505,7 @@ en: message: "Net income is higher than expected based on the lead tenant’s working situation. Are you sure this is correct?" income: under_soft_min_for_economic_status: "You said income was %{income}, which is below this working situation's minimum (%{minimum})" + over_soft_max_for_la: "You told us the income of this household is %{income}, which seems high." rent: outside_range_title: "You told us the rent is %{brent}" min_hint_text: "The minimum rent expected for this type of property in this local authority is £%{soft_min_for_period}." diff --git a/spec/models/form/sales/pages/buyer1_income_value_check_spec.rb b/spec/models/form/sales/pages/buyer1_income_min_value_check_spec.rb similarity index 78% rename from spec/models/form/sales/pages/buyer1_income_value_check_spec.rb rename to spec/models/form/sales/pages/buyer1_income_min_value_check_spec.rb index f770bd651..19dfae001 100644 --- a/spec/models/form/sales/pages/buyer1_income_value_check_spec.rb +++ b/spec/models/form/sales/pages/buyer1_income_min_value_check_spec.rb @@ -1,9 +1,9 @@ require "rails_helper" -RSpec.describe Form::Sales::Pages::Buyer1IncomeValueCheck, type: :model do +RSpec.describe Form::Sales::Pages::Buyer1IncomeMinValueCheck, type: :model do subject(:page) { described_class.new(page_id, page_definition, subsection) } - let(:page_id) { "prefix_buyer_1_income_value_check" } + let(:page_id) { "prefix_buyer_1_income_min_value_check" } let(:page_definition) { nil } let(:subsection) { instance_double(Form::Subsection) } @@ -16,7 +16,7 @@ RSpec.describe Form::Sales::Pages::Buyer1IncomeValueCheck, type: :model do end it "has the correct id" do - expect(page.id).to eq("prefix_buyer_1_income_value_check") + expect(page.id).to eq("prefix_buyer_1_income_min_value_check") end it "has the correct header" do diff --git a/spec/models/form/sales/questions/buyer1_income_value_check_spec.rb b/spec/models/form/sales/questions/buyer1_income_min_value_check_spec.rb similarity index 94% rename from spec/models/form/sales/questions/buyer1_income_value_check_spec.rb rename to spec/models/form/sales/questions/buyer1_income_min_value_check_spec.rb index 89801a398..446176f7c 100644 --- a/spec/models/form/sales/questions/buyer1_income_value_check_spec.rb +++ b/spec/models/form/sales/questions/buyer1_income_min_value_check_spec.rb @@ -1,6 +1,6 @@ require "rails_helper" -RSpec.describe Form::Sales::Questions::Buyer1IncomeValueCheck, type: :model do +RSpec.describe Form::Sales::Questions::Buyer1IncomeMinValueCheck, type: :model do subject(:question) { described_class.new(question_id, question_definition, page) } let(:question_id) { nil } diff --git a/spec/models/form/sales/subsections/household_characteristics_spec.rb b/spec/models/form/sales/subsections/household_characteristics_spec.rb index 57a9ce019..1277749ef 100644 --- a/spec/models/form/sales/subsections/household_characteristics_spec.rb +++ b/spec/models/form/sales/subsections/household_characteristics_spec.rb @@ -37,7 +37,7 @@ RSpec.describe Form::Sales::Subsections::HouseholdCharacteristics, type: :model buyer_1_nationality buyer_1_working_situation working_situation_1_retirement_value_check - working_situation_buyer_1_income_value_check + working_situation_buyer_1_income_min_value_check buyer_1_live_in_property buyer_2_relationship_to_buyer_1 buyer_2_relationship_student_not_child_value_check @@ -139,7 +139,7 @@ RSpec.describe Form::Sales::Subsections::HouseholdCharacteristics, type: :model buyer_1_nationality buyer_1_working_situation working_situation_1_retirement_value_check - working_situation_buyer_1_income_value_check + working_situation_buyer_1_income_min_value_check buyer_1_live_in_property buyer_2_relationship_to_buyer_1 buyer_2_relationship_student_not_child_value_check diff --git a/spec/models/form/sales/subsections/income_benefits_and_savings_spec.rb b/spec/models/form/sales/subsections/income_benefits_and_savings_spec.rb index aef451878..ee5700994 100644 --- a/spec/models/form/sales/subsections/income_benefits_and_savings_spec.rb +++ b/spec/models/form/sales/subsections/income_benefits_and_savings_spec.rb @@ -21,7 +21,7 @@ RSpec.describe Form::Sales::Subsections::IncomeBenefitsAndSavings, type: :model expect(subsection.pages.compact.map(&:id)).to eq( %w[ buyer_1_income - buyer_1_income_value_check + buyer_1_income_min_value_check buyer_1_income_mortgage_value_check buyer_1_mortgage buyer_1_mortgage_value_check @@ -49,7 +49,7 @@ RSpec.describe Form::Sales::Subsections::IncomeBenefitsAndSavings, type: :model expect(subsection.pages.map(&:id)).to eq( %w[ buyer_1_income - buyer_1_income_value_check + buyer_1_income_min_value_check buyer_1_income_mortgage_value_check buyer_1_mortgage buyer_1_mortgage_value_check From 295855f5d57b0504b06b15f9db3906ae146dd648 Mon Sep 17 00:00:00 2001 From: natdeanlewissoftwire Date: Wed, 5 Apr 2023 11:37:27 +0100 Subject: [PATCH 2/5] feat: add tests and refactor --- .../pages/buyer1_income_max_value_check.rb | 2 +- .../buyer1_income_max_value_check_spec.rb | 37 +++++++++++++++++++ ...c.rb => buyer1_income_value_check_spec.rb} | 2 +- .../income_benefits_and_savings_spec.rb | 2 + .../subsections/property_information_spec.rb | 2 + 5 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 spec/models/form/sales/pages/buyer1_income_max_value_check_spec.rb rename spec/models/form/sales/questions/{buyer1_income_min_value_check_spec.rb => buyer1_income_value_check_spec.rb} (94%) diff --git a/app/models/form/sales/pages/buyer1_income_max_value_check.rb b/app/models/form/sales/pages/buyer1_income_max_value_check.rb index 38f7a95aa..61f02707c 100644 --- a/app/models/form/sales/pages/buyer1_income_max_value_check.rb +++ b/app/models/form/sales/pages/buyer1_income_max_value_check.rb @@ -13,7 +13,7 @@ class Form::Sales::Pages::Buyer1IncomeMaxValueCheck < ::Form::Page "key" => "field_formatted_as_currency", "arguments_for_key" => "income1", "i18n_template" => "income", - } + }, ], } @informative_text = {} diff --git a/spec/models/form/sales/pages/buyer1_income_max_value_check_spec.rb b/spec/models/form/sales/pages/buyer1_income_max_value_check_spec.rb new file mode 100644 index 000000000..07f640773 --- /dev/null +++ b/spec/models/form/sales/pages/buyer1_income_max_value_check_spec.rb @@ -0,0 +1,37 @@ +require "rails_helper" + +RSpec.describe Form::Sales::Pages::Buyer1IncomeMaxValueCheck, type: :model do + subject(:page) { described_class.new(page_id, page_definition, subsection) } + + let(:page_id) { "prefix_buyer_1_income_max_value_check" } + let(:page_definition) { nil } + let(:subsection) { instance_double(Form::Subsection) } + + it "has correct subsection" do + expect(page.subsection).to eq(subsection) + end + + it "has correct questions" do + expect(page.questions.map(&:id)).to eq(%w[income1_value_check]) + end + + it "has the correct id" do + expect(page.id).to eq("prefix_buyer_1_income_max_value_check") + end + + it "has the correct header" do + expect(page.header).to be_nil + end + + it "has correct depends_on" do + expect(page.depends_on).to eq([ + { + "income1_over_soft_max?" => true, + }, + ]) + end + + it "is interruption screen page" do + expect(page.interruption_screen?).to eq(true) + end +end diff --git a/spec/models/form/sales/questions/buyer1_income_min_value_check_spec.rb b/spec/models/form/sales/questions/buyer1_income_value_check_spec.rb similarity index 94% rename from spec/models/form/sales/questions/buyer1_income_min_value_check_spec.rb rename to spec/models/form/sales/questions/buyer1_income_value_check_spec.rb index 446176f7c..89801a398 100644 --- a/spec/models/form/sales/questions/buyer1_income_min_value_check_spec.rb +++ b/spec/models/form/sales/questions/buyer1_income_value_check_spec.rb @@ -1,6 +1,6 @@ require "rails_helper" -RSpec.describe Form::Sales::Questions::Buyer1IncomeMinValueCheck, type: :model do +RSpec.describe Form::Sales::Questions::Buyer1IncomeValueCheck, type: :model do subject(:question) { described_class.new(question_id, question_definition, page) } let(:question_id) { nil } diff --git a/spec/models/form/sales/subsections/income_benefits_and_savings_spec.rb b/spec/models/form/sales/subsections/income_benefits_and_savings_spec.rb index ee5700994..4fa5aa6fe 100644 --- a/spec/models/form/sales/subsections/income_benefits_and_savings_spec.rb +++ b/spec/models/form/sales/subsections/income_benefits_and_savings_spec.rb @@ -22,6 +22,7 @@ RSpec.describe Form::Sales::Subsections::IncomeBenefitsAndSavings, type: :model %w[ buyer_1_income buyer_1_income_min_value_check + buyer_1_income_max_value_check buyer_1_income_mortgage_value_check buyer_1_mortgage buyer_1_mortgage_value_check @@ -50,6 +51,7 @@ RSpec.describe Form::Sales::Subsections::IncomeBenefitsAndSavings, type: :model %w[ buyer_1_income buyer_1_income_min_value_check + buyer_1_income_max_value_check buyer_1_income_mortgage_value_check buyer_1_mortgage buyer_1_mortgage_value_check diff --git a/spec/models/form/sales/subsections/property_information_spec.rb b/spec/models/form/sales/subsections/property_information_spec.rb index 1c049ea97..4c9e5b475 100644 --- a/spec/models/form/sales/subsections/property_information_spec.rb +++ b/spec/models/form/sales/subsections/property_information_spec.rb @@ -27,6 +27,7 @@ RSpec.describe Form::Sales::Subsections::PropertyInformation, type: :model do property_building_type property_postcode property_local_authority + local_authority_buyer_1_income_max_value_check about_price_la_value_check property_wheelchair_accessible ], @@ -45,6 +46,7 @@ RSpec.describe Form::Sales::Subsections::PropertyInformation, type: :model do uprn_confirmation address property_local_authority + local_authority_buyer_1_income_max_value_check property_number_of_bedrooms about_price_bedrooms_value_check property_unit_type From bc937a5e7bb6c95f4aa4034d5c9d65a377cdf3c7 Mon Sep 17 00:00:00 2001 From: natdeanlewissoftwire Date: Wed, 5 Apr 2023 12:55:06 +0100 Subject: [PATCH 3/5] feat: add buyer 2 value check --- .../pages/buyer2_income_max_value_check.rb | 27 +++++++++++++++++++ ...ck.rb => buyer2_income_min_value_check.rb} | 2 +- .../subsections/household_characteristics.rb | 2 +- .../income_benefits_and_savings.rb | 3 ++- .../sales/subsections/property_information.rb | 2 ++ .../validations/sales/soft_validations.rb | 18 ++++++++++++- config/locales/en.yml | 3 ++- .../household_characteristics_spec.rb | 4 +-- .../income_benefits_and_savings_spec.rb | 6 +++-- .../subsections/property_information_spec.rb | 2 ++ 10 files changed, 60 insertions(+), 9 deletions(-) create mode 100644 app/models/form/sales/pages/buyer2_income_max_value_check.rb rename app/models/form/sales/pages/{buyer2_income_value_check.rb => buyer2_income_min_value_check.rb} (92%) diff --git a/app/models/form/sales/pages/buyer2_income_max_value_check.rb b/app/models/form/sales/pages/buyer2_income_max_value_check.rb new file mode 100644 index 000000000..444f78559 --- /dev/null +++ b/app/models/form/sales/pages/buyer2_income_max_value_check.rb @@ -0,0 +1,27 @@ +class Form::Sales::Pages::Buyer2IncomeMaxValueCheck < ::Form::Page + def initialize(id, hsh, subsection) + super + @depends_on = [ + { + "income2_over_soft_max?" => true, + }, + ] + @title_text = { + "translation" => "soft_validations.income.over_soft_max_for_la", + "arguments" => [ + { + "key" => "field_formatted_as_currency", + "arguments_for_key" => "income2", + "i18n_template" => "income", + }, + ], + } + @informative_text = {} + end + + def questions + @questions ||= [ + Form::Sales::Questions::Buyer2IncomeValueCheck.new(nil, nil, self), + ] + end +end diff --git a/app/models/form/sales/pages/buyer2_income_value_check.rb b/app/models/form/sales/pages/buyer2_income_min_value_check.rb similarity index 92% rename from app/models/form/sales/pages/buyer2_income_value_check.rb rename to app/models/form/sales/pages/buyer2_income_min_value_check.rb index 598c4c7a6..d4f5847bd 100644 --- a/app/models/form/sales/pages/buyer2_income_value_check.rb +++ b/app/models/form/sales/pages/buyer2_income_min_value_check.rb @@ -1,4 +1,4 @@ -class Form::Sales::Pages::Buyer2IncomeValueCheck < ::Form::Page +class Form::Sales::Pages::Buyer2IncomeMinValueCheck < ::Form::Page def initialize(id, hsh, subsection) super @header = "" diff --git a/app/models/form/sales/subsections/household_characteristics.rb b/app/models/form/sales/subsections/household_characteristics.rb index af85130b4..1fef204d1 100644 --- a/app/models/form/sales/subsections/household_characteristics.rb +++ b/app/models/form/sales/subsections/household_characteristics.rb @@ -37,7 +37,7 @@ class Form::Sales::Subsections::HouseholdCharacteristics < ::Form::Subsection buyer_2_ethnicity_nationality_pages, Form::Sales::Pages::Buyer2WorkingSituation.new(nil, nil, self), Form::Sales::Pages::RetirementValueCheck.new("working_situation_2_retirement_value_check_joint_purchase", nil, self, person_index: 2), - Form::Sales::Pages::Buyer2IncomeValueCheck.new("working_situation_buyer_2_income_value_check", nil, self), + Form::Sales::Pages::Buyer2IncomeMinValueCheck.new("working_situation_buyer_2_income_min_value_check", nil, self), Form::Sales::Pages::PersonStudentNotChildValueCheck.new("buyer_2_working_situation_student_not_child_value_check", nil, self, person_index: 2), Form::Sales::Pages::Buyer2LiveInProperty.new(nil, nil, self), Form::Sales::Pages::NumberOfOthersInProperty.new("number_of_others_in_property", nil, self, joint_purchase: false), diff --git a/app/models/form/sales/subsections/income_benefits_and_savings.rb b/app/models/form/sales/subsections/income_benefits_and_savings.rb index 293c11657..e2728b6e2 100644 --- a/app/models/form/sales/subsections/income_benefits_and_savings.rb +++ b/app/models/form/sales/subsections/income_benefits_and_savings.rb @@ -16,7 +16,8 @@ class Form::Sales::Subsections::IncomeBenefitsAndSavings < ::Form::Subsection Form::Sales::Pages::MortgageValueCheck.new("buyer_1_mortgage_value_check", nil, self, 1), Form::Sales::Pages::Buyer2Income.new(nil, nil, self), Form::Sales::Pages::MortgageValueCheck.new("buyer_2_income_mortgage_value_check", nil, self, 2), - Form::Sales::Pages::Buyer2IncomeValueCheck.new("buyer_2_income_value_check", nil, self), + Form::Sales::Pages::Buyer2IncomeMinValueCheck.new("buyer_2_income_min_value_check", nil, self), + Form::Sales::Pages::Buyer2IncomeMaxValueCheck.new("buyer_2_income_max_value_check", nil, self), Form::Sales::Pages::Buyer2Mortgage.new(nil, nil, self), Form::Sales::Pages::MortgageValueCheck.new("buyer_2_mortgage_value_check", nil, self, 2), Form::Sales::Pages::HousingBenefits.new("housing_benefits_joint_purchase", nil, self, joint_purchase: true), diff --git a/app/models/form/sales/subsections/property_information.rb b/app/models/form/sales/subsections/property_information.rb index ea4b51deb..5a1545da2 100644 --- a/app/models/form/sales/subsections/property_information.rb +++ b/app/models/form/sales/subsections/property_information.rb @@ -29,6 +29,7 @@ class Form::Sales::Subsections::PropertyInformation < ::Form::Subsection Form::Sales::Pages::Address.new(nil, nil, self), Form::Sales::Pages::PropertyLocalAuthority.new(nil, nil, self), Form::Sales::Pages::Buyer1IncomeMaxValueCheck.new("local_authority_buyer_1_income_max_value_check", nil, self), + Form::Sales::Pages::Buyer2IncomeMaxValueCheck.new("local_authority_buyer_2_income_max_value_check", nil, self), ] end end @@ -39,6 +40,7 @@ class Form::Sales::Subsections::PropertyInformation < ::Form::Subsection Form::Sales::Pages::Postcode.new(nil, nil, self), Form::Sales::Pages::PropertyLocalAuthority.new(nil, nil, self), Form::Sales::Pages::Buyer1IncomeMaxValueCheck.new("local_authority_buyer_1_income_max_value_check", nil, self), + Form::Sales::Pages::Buyer2IncomeMaxValueCheck.new("local_authority_buyer_2_income_max_value_check", nil, self), ] end end diff --git a/app/models/validations/sales/soft_validations.rb b/app/models/validations/sales/soft_validations.rb index e439c7369..d95a1d723 100644 --- a/app/models/validations/sales/soft_validations.rb +++ b/app/models/validations/sales/soft_validations.rb @@ -22,7 +22,19 @@ module Validations::Sales::SoftValidations def income1_over_soft_max? return unless income1 && la && discounted_ownership_sale? - (london_property? && income1 > 90_000) || (property_not_in_london? && income1 > 80_000) + income_over_soft_max?(income1) + end + + def income2_over_soft_max? + return unless income2 && la && discounted_ownership_sale? + + income_over_soft_max?(income2) + end + + def combined_income_over_soft_max? + return unless income1 && income2 && la && discounted_ownership_sale? + + income_over_soft_max?(income1 + income2) end def staircase_bought_above_fifty? @@ -138,4 +150,8 @@ private bedrooms: beds_for_la_sale_range, ) end + + def income_over_soft_max?(income) + (london_property? && income > 90_000) || (property_not_in_london? && income > 80_000) + end end diff --git a/config/locales/en.yml b/config/locales/en.yml index c44fadb8a..ee59fa7ac 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -505,7 +505,8 @@ en: message: "Net income is higher than expected based on the lead tenant’s working situation. Are you sure this is correct?" income: under_soft_min_for_economic_status: "You said income was %{income}, which is below this working situation's minimum (%{minimum})" - over_soft_max_for_la: "You told us the income of this household is %{income}, which seems high." + over_soft_max_for_la: "You told us the income of this buyer is %{income}, which seems high." + over_soft_max_for_la_combined: "You told us the income of this household is %{income}, which seems high." rent: outside_range_title: "You told us the rent is %{brent}" min_hint_text: "The minimum rent expected for this type of property in this local authority is £%{soft_min_for_period}." diff --git a/spec/models/form/sales/subsections/household_characteristics_spec.rb b/spec/models/form/sales/subsections/household_characteristics_spec.rb index 1277749ef..faf7d28b4 100644 --- a/spec/models/form/sales/subsections/household_characteristics_spec.rb +++ b/spec/models/form/sales/subsections/household_characteristics_spec.rb @@ -49,7 +49,7 @@ RSpec.describe Form::Sales::Subsections::HouseholdCharacteristics, type: :model gender_2_buyer_retirement_value_check buyer_2_working_situation working_situation_2_retirement_value_check_joint_purchase - working_situation_buyer_2_income_value_check + working_situation_buyer_2_income_min_value_check buyer_2_working_situation_student_not_child_value_check buyer_2_live_in_property number_of_others_in_property @@ -158,7 +158,7 @@ RSpec.describe Form::Sales::Subsections::HouseholdCharacteristics, type: :model buyer_2_nationality buyer_2_working_situation working_situation_2_retirement_value_check_joint_purchase - working_situation_buyer_2_income_value_check + working_situation_buyer_2_income_min_value_check buyer_2_working_situation_student_not_child_value_check buyer_2_live_in_property number_of_others_in_property diff --git a/spec/models/form/sales/subsections/income_benefits_and_savings_spec.rb b/spec/models/form/sales/subsections/income_benefits_and_savings_spec.rb index 4fa5aa6fe..eadcfb87b 100644 --- a/spec/models/form/sales/subsections/income_benefits_and_savings_spec.rb +++ b/spec/models/form/sales/subsections/income_benefits_and_savings_spec.rb @@ -28,7 +28,8 @@ RSpec.describe Form::Sales::Subsections::IncomeBenefitsAndSavings, type: :model buyer_1_mortgage_value_check buyer_2_income buyer_2_income_mortgage_value_check - buyer_2_income_value_check + buyer_2_income_min_value_check + buyer_2_income_max_value_check buyer_2_mortgage buyer_2_mortgage_value_check housing_benefits_joint_purchase @@ -57,7 +58,8 @@ RSpec.describe Form::Sales::Subsections::IncomeBenefitsAndSavings, type: :model buyer_1_mortgage_value_check buyer_2_income buyer_2_income_mortgage_value_check - buyer_2_income_value_check + buyer_2_income_min_value_check + buyer_2_income_max_value_check buyer_2_mortgage buyer_2_mortgage_value_check housing_benefits_joint_purchase diff --git a/spec/models/form/sales/subsections/property_information_spec.rb b/spec/models/form/sales/subsections/property_information_spec.rb index 4c9e5b475..dae216968 100644 --- a/spec/models/form/sales/subsections/property_information_spec.rb +++ b/spec/models/form/sales/subsections/property_information_spec.rb @@ -28,6 +28,7 @@ RSpec.describe Form::Sales::Subsections::PropertyInformation, type: :model do property_postcode property_local_authority local_authority_buyer_1_income_max_value_check + local_authority_buyer_2_income_max_value_check about_price_la_value_check property_wheelchair_accessible ], @@ -47,6 +48,7 @@ RSpec.describe Form::Sales::Subsections::PropertyInformation, type: :model do address property_local_authority local_authority_buyer_1_income_max_value_check + local_authority_buyer_2_income_max_value_check property_number_of_bedrooms about_price_bedrooms_value_check property_unit_type From 8f0fc3f28cd60b44cb86576f48070048fd6251a6 Mon Sep 17 00:00:00 2001 From: natdeanlewissoftwire Date: Wed, 5 Apr 2023 14:32:39 +0100 Subject: [PATCH 4/5] feat: combined income value check --- .../pages/combined_income_max_value_check.rb | 28 +++++++++++++++++++ .../questions/combined_income_value_check.rb | 25 +++++++++++++++++ .../income_benefits_and_savings.rb | 2 ++ app/models/sales_log.rb | 4 +++ config/locales/en.yml | 2 +- ...ombined_income_value_check_to_sales_log.rb | 5 ++++ db/schema.rb | 3 +- 7 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 app/models/form/sales/pages/combined_income_max_value_check.rb create mode 100644 app/models/form/sales/questions/combined_income_value_check.rb create mode 100644 db/migrate/20230405132300_add_combined_income_value_check_to_sales_log.rb diff --git a/app/models/form/sales/pages/combined_income_max_value_check.rb b/app/models/form/sales/pages/combined_income_max_value_check.rb new file mode 100644 index 000000000..ae26ab4a8 --- /dev/null +++ b/app/models/form/sales/pages/combined_income_max_value_check.rb @@ -0,0 +1,28 @@ +class Form::Sales::Pages::CombinedIncomeMaxValueCheck < ::Form::Page + def initialize(id, hsh, subsection, buyer_index:) + super(id, hsh, subsection) + @depends_on = [ + { + "combined_income_over_soft_max?" => true, + }, + ] + @title_text = { + "translation" => "soft_validations.income.over_soft_max_for_la_combined", + "arguments" => [ + { + "key" => "field_formatted_as_currency", + "arguments_for_key" => "combined_income", + "i18n_template" => "combined_income", + } + ], + } + @informative_text = {} + @buyer_index = buyer_index + end + + def questions + @questions ||= [ + Form::Sales::Questions::CombinedIncomeValueCheck.new(nil, nil, self, buyer_index: @buyer_index), + ] + end +end diff --git a/app/models/form/sales/questions/combined_income_value_check.rb b/app/models/form/sales/questions/combined_income_value_check.rb new file mode 100644 index 000000000..b824e770d --- /dev/null +++ b/app/models/form/sales/questions/combined_income_value_check.rb @@ -0,0 +1,25 @@ +class Form::Sales::Questions::CombinedIncomeValueCheck < ::Form::Question + def initialize(id, hsh, page, buyer_index:) + super(id, hsh, page) + @id = "combined_income_value_check" + @check_answer_label = "Combined income confirmation" + @header = "Are you sure this is correct?" + @type = "interruption_screen" + @answer_options = { + "0" => { "value" => "Yes" }, + "1" => { "value" => "No" }, + } + @hidden_in_check_answers = { + "depends_on" => [ + { + "combined_income_value_check" => 0, + }, + { + "combined_income_value_check" => 1, + }, + ], + } + @check_answers_card_number = buyer_index + @page = page + end +end diff --git a/app/models/form/sales/subsections/income_benefits_and_savings.rb b/app/models/form/sales/subsections/income_benefits_and_savings.rb index e2728b6e2..b52c444d3 100644 --- a/app/models/form/sales/subsections/income_benefits_and_savings.rb +++ b/app/models/form/sales/subsections/income_benefits_and_savings.rb @@ -11,6 +11,7 @@ class Form::Sales::Subsections::IncomeBenefitsAndSavings < ::Form::Subsection Form::Sales::Pages::Buyer1Income.new(nil, nil, self), Form::Sales::Pages::Buyer1IncomeMinValueCheck.new("buyer_1_income_min_value_check", nil, self), Form::Sales::Pages::Buyer1IncomeMaxValueCheck.new("buyer_1_income_max_value_check", nil, self), + Form::Sales::Pages::CombinedIncomeMaxValueCheck.new("buyer_1_combined_income_max_value_check", nil, self, buyer_index: 1), Form::Sales::Pages::MortgageValueCheck.new("buyer_1_income_mortgage_value_check", nil, self, 1), Form::Sales::Pages::Buyer1Mortgage.new(nil, nil, self), Form::Sales::Pages::MortgageValueCheck.new("buyer_1_mortgage_value_check", nil, self, 1), @@ -18,6 +19,7 @@ class Form::Sales::Subsections::IncomeBenefitsAndSavings < ::Form::Subsection Form::Sales::Pages::MortgageValueCheck.new("buyer_2_income_mortgage_value_check", nil, self, 2), Form::Sales::Pages::Buyer2IncomeMinValueCheck.new("buyer_2_income_min_value_check", nil, self), Form::Sales::Pages::Buyer2IncomeMaxValueCheck.new("buyer_2_income_max_value_check", nil, self), + Form::Sales::Pages::CombinedIncomeMaxValueCheck.new("buyer_2_combined_income_max_value_check", nil, self, buyer_index: 2), Form::Sales::Pages::Buyer2Mortgage.new(nil, nil, self), Form::Sales::Pages::MortgageValueCheck.new("buyer_2_mortgage_value_check", nil, self, 2), Form::Sales::Pages::HousingBenefits.new("housing_benefits_joint_purchase", nil, self, joint_purchase: true), diff --git a/app/models/sales_log.rb b/app/models/sales_log.rb index 1cfa91acb..16d15094c 100644 --- a/app/models/sales_log.rb +++ b/app/models/sales_log.rb @@ -357,4 +357,8 @@ class SalesLog < Log def beds_for_la_sale_range beds.nil? ? nil : [beds, LaSaleRange::MAX_BEDS].min end + + def combined_income + income1 + income2 + end end diff --git a/config/locales/en.yml b/config/locales/en.yml index ee59fa7ac..1b43605cf 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -506,7 +506,7 @@ en: income: under_soft_min_for_economic_status: "You said income was %{income}, which is below this working situation's minimum (%{minimum})" over_soft_max_for_la: "You told us the income of this buyer is %{income}, which seems high." - over_soft_max_for_la_combined: "You told us the income of this household is %{income}, which seems high." + over_soft_max_for_la_combined: "You told us the income of this household is %{combined_income}, which seems high." rent: outside_range_title: "You told us the rent is %{brent}" min_hint_text: "The minimum rent expected for this type of property in this local authority is £%{soft_min_for_period}." diff --git a/db/migrate/20230405132300_add_combined_income_value_check_to_sales_log.rb b/db/migrate/20230405132300_add_combined_income_value_check_to_sales_log.rb new file mode 100644 index 000000000..bdf052288 --- /dev/null +++ b/db/migrate/20230405132300_add_combined_income_value_check_to_sales_log.rb @@ -0,0 +1,5 @@ +class AddCombinedIncomeValueCheckToSalesLog < ActiveRecord::Migration[7.0] + def change + add_column :sales_logs, :combined_income_value_check, :integer + end +end diff --git a/db/schema.rb b/db/schema.rb index 225129dfd..016e953bd 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.0].define(version: 2023_03_20_084057) do +ActiveRecord::Schema[7.0].define(version: 2023_04_05_132300) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -571,6 +571,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_03_20_084057) do t.integer "nationalbuy2" t.integer "discounted_sale_value_check" t.integer "student_not_child_value_check" + t.integer "combined_income_value_check" t.index ["bulk_upload_id"], name: "index_sales_logs_on_bulk_upload_id" t.index ["created_by_id"], name: "index_sales_logs_on_created_by_id" t.index ["old_id"], name: "index_sales_logs_on_old_id", unique: true From 8737f43f149a18074988a3a02325db45c0332100 Mon Sep 17 00:00:00 2001 From: natdeanlewissoftwire Date: Wed, 5 Apr 2023 15:00:24 +0100 Subject: [PATCH 5/5] feat: add combined validation everywhere and add tests --- .../pages/buyer2_income_min_value_check.rb | 3 -- .../pages/combined_income_max_value_check.rb | 6 +-- .../questions/combined_income_value_check.rb | 4 +- .../income_benefits_and_savings.rb | 4 +- .../sales/subsections/property_information.rb | 2 + .../buyer2_income_max_value_check_spec.rb | 37 +++++++++++++++++++ .../buyer2_income_min_value_check_spec.rb | 37 +++++++++++++++++++ .../combined_income_max_value_check_spec.rb | 37 +++++++++++++++++++ 8 files changed, 120 insertions(+), 10 deletions(-) create mode 100644 spec/models/form/sales/pages/buyer2_income_max_value_check_spec.rb create mode 100644 spec/models/form/sales/pages/buyer2_income_min_value_check_spec.rb create mode 100644 spec/models/form/sales/pages/combined_income_max_value_check_spec.rb diff --git a/app/models/form/sales/pages/buyer2_income_min_value_check.rb b/app/models/form/sales/pages/buyer2_income_min_value_check.rb index d4f5847bd..6e1a9a538 100644 --- a/app/models/form/sales/pages/buyer2_income_min_value_check.rb +++ b/app/models/form/sales/pages/buyer2_income_min_value_check.rb @@ -1,9 +1,6 @@ class Form::Sales::Pages::Buyer2IncomeMinValueCheck < ::Form::Page def initialize(id, hsh, subsection) super - @header = "" - @description = "" - @subsection = subsection @depends_on = [ { "income2_under_soft_min?" => true, diff --git a/app/models/form/sales/pages/combined_income_max_value_check.rb b/app/models/form/sales/pages/combined_income_max_value_check.rb index ae26ab4a8..d9758c912 100644 --- a/app/models/form/sales/pages/combined_income_max_value_check.rb +++ b/app/models/form/sales/pages/combined_income_max_value_check.rb @@ -1,5 +1,5 @@ class Form::Sales::Pages::CombinedIncomeMaxValueCheck < ::Form::Page - def initialize(id, hsh, subsection, buyer_index:) + def initialize(id, hsh, subsection, check_answers_card_number:) super(id, hsh, subsection) @depends_on = [ { @@ -17,12 +17,12 @@ class Form::Sales::Pages::CombinedIncomeMaxValueCheck < ::Form::Page ], } @informative_text = {} - @buyer_index = buyer_index + @check_answers_card_number = check_answers_card_number end def questions @questions ||= [ - Form::Sales::Questions::CombinedIncomeValueCheck.new(nil, nil, self, buyer_index: @buyer_index), + Form::Sales::Questions::CombinedIncomeValueCheck.new(nil, nil, self, check_answers_card_number: @check_answers_card_number), ] end end diff --git a/app/models/form/sales/questions/combined_income_value_check.rb b/app/models/form/sales/questions/combined_income_value_check.rb index b824e770d..47cafeaa2 100644 --- a/app/models/form/sales/questions/combined_income_value_check.rb +++ b/app/models/form/sales/questions/combined_income_value_check.rb @@ -1,5 +1,5 @@ class Form::Sales::Questions::CombinedIncomeValueCheck < ::Form::Question - def initialize(id, hsh, page, buyer_index:) + def initialize(id, hsh, page, check_answers_card_number:) super(id, hsh, page) @id = "combined_income_value_check" @check_answer_label = "Combined income confirmation" @@ -19,7 +19,7 @@ class Form::Sales::Questions::CombinedIncomeValueCheck < ::Form::Question }, ], } - @check_answers_card_number = buyer_index + @check_answers_card_number = check_answers_card_number @page = page end end diff --git a/app/models/form/sales/subsections/income_benefits_and_savings.rb b/app/models/form/sales/subsections/income_benefits_and_savings.rb index b52c444d3..020074a21 100644 --- a/app/models/form/sales/subsections/income_benefits_and_savings.rb +++ b/app/models/form/sales/subsections/income_benefits_and_savings.rb @@ -11,7 +11,7 @@ class Form::Sales::Subsections::IncomeBenefitsAndSavings < ::Form::Subsection Form::Sales::Pages::Buyer1Income.new(nil, nil, self), Form::Sales::Pages::Buyer1IncomeMinValueCheck.new("buyer_1_income_min_value_check", nil, self), Form::Sales::Pages::Buyer1IncomeMaxValueCheck.new("buyer_1_income_max_value_check", nil, self), - Form::Sales::Pages::CombinedIncomeMaxValueCheck.new("buyer_1_combined_income_max_value_check", nil, self, buyer_index: 1), + Form::Sales::Pages::CombinedIncomeMaxValueCheck.new("buyer_1_combined_income_max_value_check", nil, self, check_answers_card_number: 1), Form::Sales::Pages::MortgageValueCheck.new("buyer_1_income_mortgage_value_check", nil, self, 1), Form::Sales::Pages::Buyer1Mortgage.new(nil, nil, self), Form::Sales::Pages::MortgageValueCheck.new("buyer_1_mortgage_value_check", nil, self, 1), @@ -19,7 +19,7 @@ class Form::Sales::Subsections::IncomeBenefitsAndSavings < ::Form::Subsection Form::Sales::Pages::MortgageValueCheck.new("buyer_2_income_mortgage_value_check", nil, self, 2), Form::Sales::Pages::Buyer2IncomeMinValueCheck.new("buyer_2_income_min_value_check", nil, self), Form::Sales::Pages::Buyer2IncomeMaxValueCheck.new("buyer_2_income_max_value_check", nil, self), - Form::Sales::Pages::CombinedIncomeMaxValueCheck.new("buyer_2_combined_income_max_value_check", nil, self, buyer_index: 2), + Form::Sales::Pages::CombinedIncomeMaxValueCheck.new("buyer_2_combined_income_max_value_check", nil, self, check_answers_card_number: 2), Form::Sales::Pages::Buyer2Mortgage.new(nil, nil, self), Form::Sales::Pages::MortgageValueCheck.new("buyer_2_mortgage_value_check", nil, self, 2), Form::Sales::Pages::HousingBenefits.new("housing_benefits_joint_purchase", nil, self, joint_purchase: true), diff --git a/app/models/form/sales/subsections/property_information.rb b/app/models/form/sales/subsections/property_information.rb index 5a1545da2..88299d528 100644 --- a/app/models/form/sales/subsections/property_information.rb +++ b/app/models/form/sales/subsections/property_information.rb @@ -30,6 +30,7 @@ class Form::Sales::Subsections::PropertyInformation < ::Form::Subsection Form::Sales::Pages::PropertyLocalAuthority.new(nil, nil, self), Form::Sales::Pages::Buyer1IncomeMaxValueCheck.new("local_authority_buyer_1_income_max_value_check", nil, self), Form::Sales::Pages::Buyer2IncomeMaxValueCheck.new("local_authority_buyer_2_income_max_value_check", nil, self), + Form::Sales::Pages::CombinedIncomeMaxValueCheck.new("local_authority_combined_income_max_value_check", nil, self, check_answers_card_number: nil), ] end end @@ -41,6 +42,7 @@ class Form::Sales::Subsections::PropertyInformation < ::Form::Subsection Form::Sales::Pages::PropertyLocalAuthority.new(nil, nil, self), Form::Sales::Pages::Buyer1IncomeMaxValueCheck.new("local_authority_buyer_1_income_max_value_check", nil, self), Form::Sales::Pages::Buyer2IncomeMaxValueCheck.new("local_authority_buyer_2_income_max_value_check", nil, self), + Form::Sales::Pages::CombinedIncomeMaxValueCheck.new("local_authority_combined_income_max_value_check", nil, self, check_answers_card_number: nil), ] end end diff --git a/spec/models/form/sales/pages/buyer2_income_max_value_check_spec.rb b/spec/models/form/sales/pages/buyer2_income_max_value_check_spec.rb new file mode 100644 index 000000000..3bf92aa6d --- /dev/null +++ b/spec/models/form/sales/pages/buyer2_income_max_value_check_spec.rb @@ -0,0 +1,37 @@ +require "rails_helper" + +RSpec.describe Form::Sales::Pages::Buyer2IncomeMaxValueCheck, type: :model do + subject(:page) { described_class.new(page_id, page_definition, subsection) } + + let(:page_id) { "prefix_buyer_2_income_max_value_check" } + let(:page_definition) { nil } + let(:subsection) { instance_double(Form::Subsection) } + + it "has correct subsection" do + expect(page.subsection).to eq(subsection) + end + + it "has correct questions" do + expect(page.questions.map(&:id)).to eq(%w[income2_value_check]) + end + + it "has the correct id" do + expect(page.id).to eq("prefix_buyer_2_income_max_value_check") + end + + it "has the correct header" do + expect(page.header).to be_nil + end + + it "has correct depends_on" do + expect(page.depends_on).to eq([ + { + "income2_over_soft_max?" => true, + }, + ]) + end + + it "is interruption screen page" do + expect(page.interruption_screen?).to eq(true) + end +end diff --git a/spec/models/form/sales/pages/buyer2_income_min_value_check_spec.rb b/spec/models/form/sales/pages/buyer2_income_min_value_check_spec.rb new file mode 100644 index 000000000..fb13de21b --- /dev/null +++ b/spec/models/form/sales/pages/buyer2_income_min_value_check_spec.rb @@ -0,0 +1,37 @@ +require "rails_helper" + +RSpec.describe Form::Sales::Pages::Buyer2IncomeMinValueCheck, type: :model do + subject(:page) { described_class.new(page_id, page_definition, subsection) } + + let(:page_id) { "prefix_buyer_2_income_min_value_check" } + let(:page_definition) { nil } + let(:subsection) { instance_double(Form::Subsection) } + + it "has correct subsection" do + expect(page.subsection).to eq(subsection) + end + + it "has correct questions" do + expect(page.questions.map(&:id)).to eq(%w[income2_value_check]) + end + + it "has the correct id" do + expect(page.id).to eq("prefix_buyer_2_income_min_value_check") + end + + it "has the correct header" do + expect(page.header).to be_nil + end + + it "has correct depends_on" do + expect(page.depends_on).to eq([ + { + "income2_under_soft_min?" => true, + }, + ]) + end + + it "is interruption screen page" do + expect(page.interruption_screen?).to eq(true) + end +end diff --git a/spec/models/form/sales/pages/combined_income_max_value_check_spec.rb b/spec/models/form/sales/pages/combined_income_max_value_check_spec.rb new file mode 100644 index 000000000..c9834e042 --- /dev/null +++ b/spec/models/form/sales/pages/combined_income_max_value_check_spec.rb @@ -0,0 +1,37 @@ +require "rails_helper" + +RSpec.describe Form::Sales::Pages::CombinedIncomeMaxValueCheck, type: :model do + subject(:page) { described_class.new(page_id, page_definition, subsection, check_answers_card_number: nil) } + + let(:page_id) { "prefix_combined_income_max_value_check" } + let(:page_definition) { nil } + let(:subsection) { instance_double(Form::Subsection) } + + it "has correct subsection" do + expect(page.subsection).to eq(subsection) + end + + it "has correct questions" do + expect(page.questions.map(&:id)).to eq(%w[combined_income_value_check]) + end + + it "has the correct id" do + expect(page.id).to eq("prefix_combined_income_max_value_check") + end + + it "has the correct header" do + expect(page.header).to be_nil + end + + it "has correct depends_on" do + expect(page.depends_on).to eq([ + { + "combined_income_over_soft_max?" => true, + }, + ]) + end + + it "is interruption screen page" do + expect(page.interruption_screen?).to eq(true) + end +end