From 99a79d1120177f97d9fb8a4e21b4ad1a54ea506c Mon Sep 17 00:00:00 2001 From: natdeanlewissoftwire Date: Thu, 5 Jan 2023 09:37:52 +0000 Subject: [PATCH] feat: PO fix and tests --- ...osit.rb => about_deposit_with_discount.rb} | 4 +- .../pages/about_deposit_without_discount.rb | 31 +++++++++++ .../discounted_ownership_scheme.rb | 2 +- .../form/sales/subsections/outright_sale.rb | 2 +- .../subsections/shared_ownership_scheme.rb | 3 +- ...rb => about_deposit_with_discount_spec.rb} | 10 ++-- .../about_deposit_without_discount_spec.rb | 51 +++++++++++++++++++ .../shared_ownership_scheme_spec.rb | 1 + spec/models/form_handler_spec.rb | 4 +- 9 files changed, 99 insertions(+), 9 deletions(-) rename app/models/form/sales/pages/{about_deposit.rb => about_deposit_with_discount.rb} (69%) create mode 100644 app/models/form/sales/pages/about_deposit_without_discount.rb rename spec/models/form/sales/pages/{about_deposit_spec.rb => about_deposit_with_discount_spec.rb} (75%) create mode 100644 spec/models/form/sales/pages/about_deposit_without_discount_spec.rb diff --git a/app/models/form/sales/pages/about_deposit.rb b/app/models/form/sales/pages/about_deposit_with_discount.rb similarity index 69% rename from app/models/form/sales/pages/about_deposit.rb rename to app/models/form/sales/pages/about_deposit_with_discount.rb index 415908567..bf3b38224 100644 --- a/app/models/form/sales/pages/about_deposit.rb +++ b/app/models/form/sales/pages/about_deposit_with_discount.rb @@ -1,9 +1,11 @@ -class Form::Sales::Pages::AboutDeposit < ::Form::Page +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 = [{ "type" => 18 }] end def questions diff --git a/app/models/form/sales/pages/about_deposit_without_discount.rb b/app/models/form/sales/pages/about_deposit_without_discount.rb new file mode 100644 index 000000000..7a0dbcfa3 --- /dev/null +++ b/app/models/form/sales/pages/about_deposit_without_discount.rb @@ -0,0 +1,31 @@ +class Form::Sales::Pages::AboutDepositWithoutDiscount < ::Form::Page + def initialize(id, hsh, subsection) + super + @header = "About the deposit" + @description = "" + @subsection = subsection + @depends_on = [ + { "type" => 2 }, + { "type" => 24 }, + { "type" => 16 }, + { "type" => 28 }, + { "type" => 31 }, + { "type" => 30 }, + { "type" => 8 }, + { "type" => 14 }, + { "type" => 27 }, + { "type" => 9 }, + { "type" => 29 }, + { "type" => 21 }, + { "type" => 22 }, + { "type" => 10 }, + { "type" => 12 }, + ] + end + + def questions + @questions ||= [ + Form::Sales::Questions::DepositAmount.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/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..4842d3286 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,10 @@ 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( + [ + { "type" => 18 }, + ], + ) 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..f6f0c321f --- /dev/null +++ b/spec/models/form/sales/pages/about_deposit_without_discount_spec.rb @@ -0,0 +1,51 @@ +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( + [ + { "type" => 2 }, + { "type" => 24 }, + { "type" => 16 }, + { "type" => 28 }, + { "type" => 31 }, + { "type" => 30 }, + { "type" => 8 }, + { "type" => 14 }, + { "type" => 27 }, + { "type" => 9 }, + { "type" => 29 }, + { "type" => 21 }, + { "type" => 22 }, + { "type" => 10 }, + { "type" => 12 }, + ], + ) + 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