From bee2bb2d78a24001ed12da1332cd39e4a3eeea53 Mon Sep 17 00:00:00 2001 From: Jack S Date: Mon, 30 Jan 2023 11:08:30 +0000 Subject: [PATCH] CLDC-1849 Add hint to discounted ownership purchase price --- .../purchase_price_discounted_ownership.rb | 14 +++++ .../purchase_price_discounted_ownership.rb | 13 +++++ .../discounted_ownership_scheme.rb | 3 +- ...urchase_price_discounted_ownership_spec.rb | 35 +++++++++++++ ...urchase_price_discounted_ownership_spec.rb | 51 +++++++++++++++++++ .../discounted_ownership_scheme_spec.rb | 1 + spec/models/form_handler_spec.rb | 4 +- 7 files changed, 118 insertions(+), 3 deletions(-) create mode 100644 app/models/form/sales/pages/purchase_price_discounted_ownership.rb create mode 100644 app/models/form/sales/questions/purchase_price_discounted_ownership.rb create mode 100644 spec/models/form/sales/pages/purchase_price_discounted_ownership_spec.rb create mode 100644 spec/models/form/sales/questions/purchase_price_discounted_ownership_spec.rb diff --git a/app/models/form/sales/pages/purchase_price_discounted_ownership.rb b/app/models/form/sales/pages/purchase_price_discounted_ownership.rb new file mode 100644 index 000000000..4eaae6732 --- /dev/null +++ b/app/models/form/sales/pages/purchase_price_discounted_ownership.rb @@ -0,0 +1,14 @@ +class Form::Sales::Pages::PurchasePriceDiscountedOwnership < ::Form::Page + def initialize(id, hsh, subsection) + super + @depends_on = [ + { "ownershipsch" => 2 }, + ] + end + + def questions + @questions ||= [ + Form::Sales::Questions::PurchasePriceDiscountedOwnership.new(nil, nil, self), + ] + end +end diff --git a/app/models/form/sales/questions/purchase_price_discounted_ownership.rb b/app/models/form/sales/questions/purchase_price_discounted_ownership.rb new file mode 100644 index 000000000..8e9e5015f --- /dev/null +++ b/app/models/form/sales/questions/purchase_price_discounted_ownership.rb @@ -0,0 +1,13 @@ +class Form::Sales::Questions::PurchasePriceDiscountedOwnership < ::Form::Question + def initialize(id, hsh, page) + super + @id = "value" + @check_answer_label = "Purchase price" + @header = "What is the full purchase price?" + @type = "numeric" + @min = 0 + @width = 5 + @prefix = "£" + @hint_text = "For all schemes, including Right to Acquire (RTA), Right to Buy (RTB), Voluntary Right to Buy (VRTB) or Preserved Right to Buy (PRTB) sales, enter the full price of the property without any discount" + end +end diff --git a/app/models/form/sales/subsections/discounted_ownership_scheme.rb b/app/models/form/sales/subsections/discounted_ownership_scheme.rb index 6070afda6..318a3b85e 100644 --- a/app/models/form/sales/subsections/discounted_ownership_scheme.rb +++ b/app/models/form/sales/subsections/discounted_ownership_scheme.rb @@ -13,7 +13,8 @@ class Form::Sales::Subsections::DiscountedOwnershipScheme < ::Form::Subsection Form::Sales::Pages::ExtraBorrowingValueCheck.new("extra_borrowing_price_value_check", nil, self), Form::Sales::Pages::AboutPriceNotRtb.new(nil, nil, self), Form::Sales::Pages::GrantValueCheck.new(nil, nil, self), - Form::Sales::Pages::PurchasePrice.new("purchase_price_discounted_ownership", nil, self), + Form::Sales::Pages::PurchasePrice.new("outright_purchase_price", nil, self), + Form::Sales::Pages::PurchasePriceDiscountedOwnership.new("purchase_price_discounted_ownership", nil, self), Form::Sales::Pages::DepositAndMortgageValueCheck.new("discounted_ownership_deposit_and_mortgage_value_check_after_value_and_discount", nil, self), Form::Sales::Pages::Mortgageused.new("mortgage_used_discounted_ownership", nil, self), Form::Sales::Pages::MortgageValueCheck.new("discounted_ownership_mortgage_used_mortgage_value_check", nil, self), diff --git a/spec/models/form/sales/pages/purchase_price_discounted_ownership_spec.rb b/spec/models/form/sales/pages/purchase_price_discounted_ownership_spec.rb new file mode 100644 index 000000000..3cd2d58b3 --- /dev/null +++ b/spec/models/form/sales/pages/purchase_price_discounted_ownership_spec.rb @@ -0,0 +1,35 @@ +require "rails_helper" + +RSpec.describe Form::Sales::Pages::PurchasePriceDiscountedOwnership, type: :model do + subject(:page) { described_class.new(page_id, page_definition, subsection) } + + let(:page_id) { "purchase_price" } + 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[value]) + end + + it "has the correct id" do + expect(page.id).to eq("purchase_price") + end + + it "has the correct header" do + expect(page.header).to be_nil + end + + it "has the correct description" do + expect(page.description).to be_nil + end + + it "has correct depends_on" do + expect(page.depends_on).to eq([ + { "ownershipsch" => 2 }, + ]) + end +end diff --git a/spec/models/form/sales/questions/purchase_price_discounted_ownership_spec.rb b/spec/models/form/sales/questions/purchase_price_discounted_ownership_spec.rb new file mode 100644 index 000000000..9f7e7c942 --- /dev/null +++ b/spec/models/form/sales/questions/purchase_price_discounted_ownership_spec.rb @@ -0,0 +1,51 @@ +require "rails_helper" + +RSpec.describe Form::Sales::Questions::PurchasePriceDiscountedOwnership, 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("value") + end + + it "has the correct header" do + expect(question.header).to eq("What is the full purchase price?") + end + + it "has the correct check_answer_label" do + expect(question.check_answer_label).to eq("Purchase price") + 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 eq( + "For all schemes, including Right to Acquire (RTA), Right to Buy (RTB), Voluntary Right to Buy (VRTB) or Preserved Right to Buy (PRTB) sales, enter the full price of the property without any discount", + ) + end + + it "has correct width" do + expect(question.width).to eq(5) + end + + it "has correct prefix" do + expect(question.prefix).to eq("£") + end + + it "has correct min" do + expect(question.min).to eq(0) + 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 5702f7783..6c78d0da3 100644 --- a/spec/models/form/sales/subsections/discounted_ownership_scheme_spec.rb +++ b/spec/models/form/sales/subsections/discounted_ownership_scheme_spec.rb @@ -19,6 +19,7 @@ RSpec.describe Form::Sales::Subsections::DiscountedOwnershipScheme, type: :model extra_borrowing_price_value_check about_price_not_rtb grant_value_check + outright_purchase_price purchase_price_discounted_ownership discounted_ownership_deposit_and_mortgage_value_check_after_value_and_discount mortgage_used_discounted_ownership diff --git a/spec/models/form_handler_spec.rb b/spec/models/form_handler_spec.rb index c09dbb998..6f569d717 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(209) + expect(form.pages.count).to eq(210) 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(209) + expect(form.pages.count).to eq(210) expect(form.name).to eq("2021_2022_sales") end end