diff --git a/app/models/form/sales/pages/about_deposit_with_discount.rb b/app/models/form/sales/pages/about_deposit_with_discount.rb new file mode 100644 index 000000000..1de5365aa --- /dev/null +++ b/app/models/form/sales/pages/about_deposit_with_discount.rb @@ -0,0 +1,17 @@ +class Form::Sales::Pages::AboutDepositWithDiscount < ::Form::Page + def initialize(id, hsh, subsection) + super + @id = "about_deposit_with_discount" + @header = "About the deposit" + @description = "" + @subsection = subsection + @depends_on = [{ "is_type_discount?" => true }] + end + + def questions + @questions ||= [ + Form::Sales::Questions::DepositAmount.new(nil, nil, self), + Form::Sales::Questions::DepositDiscount.new(nil, nil, self), + ] + end +end diff --git a/app/models/form/sales/pages/about_deposit.rb b/app/models/form/sales/pages/about_deposit_without_discount.rb similarity index 67% rename from app/models/form/sales/pages/about_deposit.rb rename to app/models/form/sales/pages/about_deposit_without_discount.rb index 415908567..00f306208 100644 --- a/app/models/form/sales/pages/about_deposit.rb +++ b/app/models/form/sales/pages/about_deposit_without_discount.rb @@ -1,15 +1,15 @@ -class Form::Sales::Pages::AboutDeposit < ::Form::Page +class Form::Sales::Pages::AboutDepositWithoutDiscount < ::Form::Page def initialize(id, hsh, subsection) super @header = "About the deposit" @description = "" @subsection = subsection + @depends_on = [{ "is_type_discount?" => false }] end def questions @questions ||= [ Form::Sales::Questions::DepositAmount.new(nil, nil, self), - Form::Sales::Questions::DepositDiscount.new(nil, nil, self), ] 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 1fce2f1bf..4e317618e 100644 --- a/app/models/form/sales/subsections/discounted_ownership_scheme.rb +++ b/app/models/form/sales/subsections/discounted_ownership_scheme.rb @@ -13,7 +13,7 @@ class Form::Sales::Subsections::DiscountedOwnershipScheme < ::Form::Subsection Form::Sales::Pages::AboutPriceRtb.new(nil, nil, self), Form::Sales::Pages::AboutPriceNotRtb.new(nil, nil, self), Form::Sales::Pages::MortgageAmount.new("mortgage_amount_discounted_ownership", nil, self), - Form::Sales::Pages::AboutDeposit.new("about_deposit_discounted_ownership", nil, self), + Form::Sales::Pages::AboutDepositWithoutDiscount.new("about_deposit_discounted_ownership", nil, self), ] end diff --git a/app/models/form/sales/subsections/outright_sale.rb b/app/models/form/sales/subsections/outright_sale.rb index 4b72720f0..c9c6bbf85 100644 --- a/app/models/form/sales/subsections/outright_sale.rb +++ b/app/models/form/sales/subsections/outright_sale.rb @@ -11,7 +11,7 @@ class Form::Sales::Subsections::OutrightSale < ::Form::Subsection @pages ||= [ Form::Sales::Pages::PurchasePrice.new(nil, nil, self), Form::Sales::Pages::MortgageAmount.new("mortgage_amount_outright_sale", nil, self), - Form::Sales::Pages::AboutDeposit.new("about_deposit_outright_sale", nil, self), + Form::Sales::Pages::AboutDepositWithoutDiscount.new("about_deposit_outright_sale", nil, self), ] end diff --git a/app/models/form/sales/subsections/shared_ownership_scheme.rb b/app/models/form/sales/subsections/shared_ownership_scheme.rb index 9b35c3b69..89a438487 100644 --- a/app/models/form/sales/subsections/shared_ownership_scheme.rb +++ b/app/models/form/sales/subsections/shared_ownership_scheme.rb @@ -19,7 +19,8 @@ class Form::Sales::Subsections::SharedOwnershipScheme < ::Form::Subsection Form::Sales::Pages::PreviousBedrooms.new(nil, nil, self), Form::Sales::Pages::AboutPriceSharedOwnership.new(nil, nil, self), Form::Sales::Pages::MortgageAmount.new("mortgage_amount_shared_ownership", nil, self), - Form::Sales::Pages::AboutDeposit.new("about_deposit_shared_ownership", nil, self), + Form::Sales::Pages::AboutDepositWithDiscount.new(nil, nil, self), + Form::Sales::Pages::AboutDepositWithoutDiscount.new("about_deposit_shared_ownership", nil, self), Form::Sales::Pages::MonthlyRent.new(nil, nil, self), ] end diff --git a/app/models/sales_log.rb b/app/models/sales_log.rb index cda76d10e..65175a802 100644 --- a/app/models/sales_log.rb +++ b/app/models/sales_log.rb @@ -115,4 +115,8 @@ class SalesLog < Log def right_to_buy? [9, 14, 27].include?(type) end + + def is_type_discount? + type == 18 + end end diff --git a/spec/models/form/sales/pages/about_deposit_spec.rb b/spec/models/form/sales/pages/about_deposit_with_discount_spec.rb similarity index 75% rename from spec/models/form/sales/pages/about_deposit_spec.rb rename to spec/models/form/sales/pages/about_deposit_with_discount_spec.rb index e22cf1e76..692f17a75 100644 --- a/spec/models/form/sales/pages/about_deposit_spec.rb +++ b/spec/models/form/sales/pages/about_deposit_with_discount_spec.rb @@ -1,6 +1,6 @@ require "rails_helper" -RSpec.describe Form::Sales::Pages::AboutDeposit, type: :model do +RSpec.describe Form::Sales::Pages::AboutDepositWithDiscount, type: :model do subject(:page) { described_class.new(page_id, page_definition, subsection) } let(:page_id) { nil } @@ -16,7 +16,7 @@ RSpec.describe Form::Sales::Pages::AboutDeposit, type: :model do end it "has the correct id" do - expect(page.id).to eq(nil) + expect(page.id).to eq("about_deposit_with_discount") end it "has the correct header" do @@ -28,6 +28,8 @@ RSpec.describe Form::Sales::Pages::AboutDeposit, type: :model do end it "has correct depends_on" do - expect(page.depends_on).to be_nil + expect(page.depends_on).to eq( + [{ "is_type_discount?" => true }], + ) end end diff --git a/spec/models/form/sales/pages/about_deposit_without_discount_spec.rb b/spec/models/form/sales/pages/about_deposit_without_discount_spec.rb new file mode 100644 index 000000000..07f9c983d --- /dev/null +++ b/spec/models/form/sales/pages/about_deposit_without_discount_spec.rb @@ -0,0 +1,35 @@ +require "rails_helper" + +RSpec.describe Form::Sales::Pages::AboutDepositWithoutDiscount, 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[deposit]) + 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("About the deposit") + end + + it "has the correct description" do + expect(page.description).to eq("") + end + + it "has correct depends_on" do + expect(page.depends_on).to eq( + [{ "is_type_discount?" => false }], + ) + end +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 24250a368..4cdf0c468 100644 --- a/spec/models/form/sales/subsections/shared_ownership_scheme_spec.rb +++ b/spec/models/form/sales/subsections/shared_ownership_scheme_spec.rb @@ -24,6 +24,7 @@ RSpec.describe Form::Sales::Subsections::SharedOwnershipScheme, type: :model do previous_bedrooms about_price_shared_ownership mortgage_amount_shared_ownership + about_deposit_with_discount about_deposit_shared_ownership monthly_rent ], diff --git a/spec/models/form_handler_spec.rb b/spec/models/form_handler_spec.rb index 765814ca7..b60b9c6db 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(89) + expect(form.pages.count).to eq(90) 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(89) + expect(form.pages.count).to eq(90) expect(form.name).to eq("2021_2022_sales") end end