diff --git a/spec/factories/sales_log.rb b/spec/factories/sales_log.rb index ffe3c852a..fc942aea4 100644 --- a/spec/factories/sales_log.rb +++ b/spec/factories/sales_log.rb @@ -73,6 +73,8 @@ FactoryBot.define do value { 110_000 } grant { 1_000 } proplen { 10 } + mscharge_known { 1 } + mscharge { 100 } end end end diff --git a/spec/models/form/sales/pages/leasehold_charges_spec.rb b/spec/models/form/sales/pages/leasehold_charges_spec.rb new file mode 100644 index 000000000..d35d1076b --- /dev/null +++ b/spec/models/form/sales/pages/leasehold_charges_spec.rb @@ -0,0 +1,33 @@ +require "rails_helper" + +RSpec.describe Form::Sales::Pages::LeaseholdCharges, type: :model do + subject(:page) { described_class.new(page_id, page_definition, subsection) } + + let(:page_id) { nil } + 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[mscharge_known mscharge]) + end + + it "has the correct id" do + expect(page.id).to eq(nil) + end + + it "has the correct header" do + expect(page.header).to eq("") + end + + it "has the correct description" do + expect(page.description).to eq("") + end + + it "has correct depends_on" do + expect(page.depends_on).to be_nil + end +end diff --git a/spec/models/form/sales/questions/leasehold_charges_known_spec.rb b/spec/models/form/sales/questions/leasehold_charges_known_spec.rb new file mode 100644 index 000000000..d47b535eb --- /dev/null +++ b/spec/models/form/sales/questions/leasehold_charges_known_spec.rb @@ -0,0 +1,60 @@ +require "rails_helper" + +RSpec.describe Form::Sales::Questions::LeaseholdChargesKnown, type: :model do + subject(:question) { described_class.new(question_id, question_definition, page) } + + let(:question_id) { nil } + let(:question_definition) { nil } + let(:page) { instance_double(Form::Page) } + + it "has correct page" do + expect(question.page).to eq(page) + end + + it "has the correct id" do + expect(question.id).to eq("mscharge_known") + end + + it "has the correct header" do + expect(question.header).to eq("Does the property have any monthly leasehold charges?") + end + + it "has the correct check_answer_label" do + expect(question.check_answer_label).to eq("Monthly leasehold charges known?") + end + + it "has the correct type" do + expect(question.type).to eq("radio") + end + + it "is not marked as derived" do + expect(question.derived?).to be false + end + + it "has the correct answer_options" do + expect(question.answer_options).to eq({ + "0" => { "value" => "No" }, + "1" => { "value" => "Yes" }, + }) + end + + it "has correct conditional for" do + expect(question.conditional_for).to eq({ + "mscharge" => [1], + }) + end + + it "has the correct hint" do + expect(question.hint_text).to eq("For example, service and management charges") + end + + it "has correct hidden_in_check_answers for" do + expect(question.hidden_in_check_answers).to eq({ + "depends_on" => [ + { + "mscharge_known" => 1, + }, + ], + }) + end +end diff --git a/spec/models/form/sales/questions/leasehold_charges_spec.rb b/spec/models/form/sales/questions/leasehold_charges_spec.rb new file mode 100644 index 000000000..a06fc9975 --- /dev/null +++ b/spec/models/form/sales/questions/leasehold_charges_spec.rb @@ -0,0 +1,49 @@ +require "rails_helper" + +RSpec.describe Form::Sales::Questions::LeaseholdCharges, type: :model do + subject(:question) { described_class.new(question_id, question_definition, page) } + + let(:question_id) { nil } + let(:question_definition) { nil } + let(:page) { instance_double(Form::Page) } + + it "has correct page" do + expect(question.page).to eq(page) + end + + it "has the correct id" do + expect(question.id).to eq("mscharge") + end + + it "has the correct header" do + expect(question.header).to eq("Enter the total monthly charge") + end + + it "has the correct check_answer_label" do + expect(question.check_answer_label).to eq("Monthly leasehold charges") + end + + it "has the correct type" do + expect(question.type).to eq("numeric") + end + + it "is not marked as derived" do + expect(question.derived?).to be false + end + + it "has the correct hint" do + expect(question.hint_text).to be_nil + end + + it "has the correct width" do + expect(question.width).to eq(5) + end + + it "has the correct min" do + expect(question.min).to eq(0) + end + + it "has the correct prefix" do + expect(question.prefix).to eq("£") + end +end diff --git a/spec/models/form/sales/subsections/discounted_ownership_scheme_spec.rb b/spec/models/form/sales/subsections/discounted_ownership_scheme_spec.rb index 3da535e54..4aefd786a 100644 --- a/spec/models/form/sales/subsections/discounted_ownership_scheme_spec.rb +++ b/spec/models/form/sales/subsections/discounted_ownership_scheme_spec.rb @@ -16,7 +16,8 @@ RSpec.describe Form::Sales::Subsections::DiscountedOwnershipScheme, type: :model %w[living_before_purchase_discounted_ownership about_price_rtb about_price_not_rtb - about_deposit_discounted_ownership], + about_deposit_discounted_ownership + leasehold_charges_discounted_ownership], ) end diff --git a/spec/models/form/sales/subsections/outright_sale_spec.rb b/spec/models/form/sales/subsections/outright_sale_spec.rb index 75f47bbc0..433c9cb59 100644 --- a/spec/models/form/sales/subsections/outright_sale_spec.rb +++ b/spec/models/form/sales/subsections/outright_sale_spec.rb @@ -13,7 +13,8 @@ RSpec.describe Form::Sales::Subsections::OutrightSale, type: :model do it "has correct pages" do expect(outright_sale.pages.map(&:id)).to eq( - %w[about_deposit_outright_sale], + %w[about_deposit_outright_sale + leasehold_charges_outright_sale], ) end diff --git a/spec/models/form/sales/subsections/shared_ownership_scheme_spec.rb b/spec/models/form/sales/subsections/shared_ownership_scheme_spec.rb index aabf19c13..d1c9804e5 100644 --- a/spec/models/form/sales/subsections/shared_ownership_scheme_spec.rb +++ b/spec/models/form/sales/subsections/shared_ownership_scheme_spec.rb @@ -18,6 +18,7 @@ RSpec.describe Form::Sales::Subsections::SharedOwnershipScheme, type: :model do staircasing about_staircasing resale + exchange_contracts la_nominations buyer_previous previous_bedrooms @@ -25,7 +26,7 @@ RSpec.describe Form::Sales::Subsections::SharedOwnershipScheme, type: :model do about_price_social_housing about_deposit_shared_ownership monthly_rent - exchange_contracts + leasehold_charges_shared_ownership ], ) end diff --git a/spec/models/form_handler_spec.rb b/spec/models/form_handler_spec.rb index e25eeb375..765814ca7 100644 --- a/spec/models/form_handler_spec.rb +++ b/spec/models/form_handler_spec.rb @@ -52,14 +52,14 @@ RSpec.describe FormHandler do it "is able to load a current sales form" do form = form_handler.get_form("current_sales") expect(form).to be_a(Form) - expect(form.pages.count).to eq(86) + expect(form.pages.count).to eq(89) expect(form.name).to eq("2022_2023_sales") end it "is able to load a previous sales form" do form = form_handler.get_form("previous_sales") expect(form).to be_a(Form) - expect(form.pages.count).to eq(86) + expect(form.pages.count).to eq(89) expect(form.name).to eq("2021_2022_sales") end end