From 1170be2748d61db2f9a07ba56c410be4f6e3fb28 Mon Sep 17 00:00:00 2001 From: kosiakkatrina <54268893+kosiakkatrina@users.noreply.github.com> Date: Thu, 15 Aug 2024 14:32:08 +0100 Subject: [PATCH] Update discounted ownership guidance (#2582) * Update discounted ownership guidance * Add top guidance partial to outright sale * Update outright sale guidance content * Update model test --- .../purchase_price_outright_ownership.rb | 2 + .../form/sales/questions/mortgageused.rb | 1 + ...calculations_discounted_ownership.html.erb | 37 +++++--- ...ancial_calculations_outright_sale.html.erb | 15 ++-- .../purchase_price_outright_ownership_spec.rb | 2 +- ..._calculations_discounted_ownership_spec.rb | 85 +++++++++++++++++++ ...nancial_calculations_outright_sale_spec.rb | 45 ++++++++++ 7 files changed, 167 insertions(+), 20 deletions(-) create mode 100644 spec/views/form/guidance/_financial_calculations_discounted_ownership_spec.rb create mode 100644 spec/views/form/guidance/_financial_calculations_outright_sale_spec.rb diff --git a/app/models/form/sales/pages/purchase_price_outright_ownership.rb b/app/models/form/sales/pages/purchase_price_outright_ownership.rb index a5e995ed6..897a19c2e 100644 --- a/app/models/form/sales/pages/purchase_price_outright_ownership.rb +++ b/app/models/form/sales/pages/purchase_price_outright_ownership.rb @@ -4,6 +4,8 @@ class Form::Sales::Pages::PurchasePriceOutrightOwnership < ::Form::Page @depends_on = [ { "outright_sale_or_discounted_with_full_ownership?" => true }, ] + @header = "About the price of the property" + @top_guidance_partial = "financial_calculations_outright_sale" @ownershipsch = ownershipsch end diff --git a/app/models/form/sales/questions/mortgageused.rb b/app/models/form/sales/questions/mortgageused.rb index acc425a77..4ece2544e 100644 --- a/app/models/form/sales/questions/mortgageused.rb +++ b/app/models/form/sales/questions/mortgageused.rb @@ -39,5 +39,6 @@ class Form::Sales::Questions::Mortgageused < ::Form::Question def top_guidance_partial return "financial_calculations_shared_ownership" if @ownershipsch == 1 return "financial_calculations_discounted_ownership" if @ownershipsch == 2 + return "financial_calculations_outright_sale" if @ownershipsch == 3 end end diff --git a/app/views/form/guidance/_financial_calculations_discounted_ownership.html.erb b/app/views/form/guidance/_financial_calculations_discounted_ownership.html.erb index fc507fe01..f87f9ba7f 100644 --- a/app/views/form/guidance/_financial_calculations_discounted_ownership.html.erb +++ b/app/views/form/guidance/_financial_calculations_discounted_ownership.html.erb @@ -2,19 +2,28 @@ <% grant_question_link = question_link("grant", log, current_user) %> <% value_question_link = question_link("value", log, current_user) %> <%= govuk_details(summary_text: "How the financial values are calculated") do %> -
- The mortgage amount <%= question_link("mortgage", log, current_user) %> - <% if grant_question_link.blank? %> - and cash deposit <%= question_link("deposit", log, current_user) %> - <% else %> - cash deposit <%= question_link("deposit", log, current_user) %> - and grant <%= grant_question_link %> - <% end %> - added together must equal - the purchase price <%= value_question_link %> - <% if discount_question_link.present? %> - subtracted by the sum of the purchase price <%= value_question_link %> - multiplied by the discount <%= discount_question_link %> - <% end %> +
+ <% if log.mortgage_used? || log.mortgageused.blank? %> + <% mortgage_question_link = log.mortgageused.blank? ? question_link("mortgageused", log, current_user) : question_link("mortgage", log, current_user) %> + The mortgage amount <%= mortgage_question_link %><% if grant_question_link.blank? %> + and cash deposit <%= question_link("deposit", log, current_user) %> + <% else %>, cash deposit <%= question_link("deposit", log, current_user) %> + and grant <%= grant_question_link %> + <% end %> + added together must equal + <% else %> + <% if grant_question_link.blank? %> + Cash deposit <%= question_link("deposit", log, current_user) %> must equal + <% else %> + Cash deposit <%= question_link("deposit", log, current_user) %> + and grant <%= grant_question_link %> + added together must equal + <% end %> + <% end %> + the purchase price <%= value_question_link %> + <% if discount_question_link.present? %> + subtracted by the sum of the purchase price <%= value_question_link %> + multiplied by the discount <%= discount_question_link %> + <% end %>
<% end %> diff --git a/app/views/form/guidance/_financial_calculations_outright_sale.html.erb b/app/views/form/guidance/_financial_calculations_outright_sale.html.erb index bd57bd63c..ae5ebd50f 100644 --- a/app/views/form/guidance/_financial_calculations_outright_sale.html.erb +++ b/app/views/form/guidance/_financial_calculations_outright_sale.html.erb @@ -1,8 +1,13 @@ <%= govuk_details(summary_text: "How the financial values are calculated") do %>- The mortgage amount <%= question_link("mortgage", log, current_user) %> - and cash deposit <%= question_link("deposit", log, current_user) %> - added together must equal - the purchase price <%= question_link("value", log, current_user) %> -
+ <% if log.mortgage_used? || log.mortgageused.blank? %> + <% mortgage_question_link = log.mortgageused.blank? ? question_link("mortgageused", log, current_user) : question_link("mortgage", log, current_user) %> + The mortgage amount <%= mortgage_question_link %> + and cash deposit <%= question_link("deposit", log, current_user) %> + added together must equal + <% else %> + Cash deposit <%= question_link("deposit", log, current_user) %> must equal + <% end %> + the purchase price <%= question_link("value", log, current_user) %> + <% end %> diff --git a/spec/models/form/sales/pages/purchase_price_outright_ownership_spec.rb b/spec/models/form/sales/pages/purchase_price_outright_ownership_spec.rb index 83342c9b0..1aefb1e43 100644 --- a/spec/models/form/sales/pages/purchase_price_outright_ownership_spec.rb +++ b/spec/models/form/sales/pages/purchase_price_outright_ownership_spec.rb @@ -20,7 +20,7 @@ RSpec.describe Form::Sales::Pages::PurchasePriceOutrightOwnership, type: :model end it "has the correct header" do - expect(page.header).to be_nil + expect(page.header).to eq("About the price of the property") end it "has the correct description" do diff --git a/spec/views/form/guidance/_financial_calculations_discounted_ownership_spec.rb b/spec/views/form/guidance/_financial_calculations_discounted_ownership_spec.rb new file mode 100644 index 000000000..5b40f2fc3 --- /dev/null +++ b/spec/views/form/guidance/_financial_calculations_discounted_ownership_spec.rb @@ -0,0 +1,85 @@ +require "rails_helper" + +RSpec.describe "form/guidance/_financial_calculations_discounted_ownership.html.erb" do + let(:log) { create(:sales_log) } + + let(:fragment) { Capybara::Node::Simple.new(rendered) } + + context "when mortgage used is not answered" do + let(:log) { create(:sales_log, :completed, ownershipsch: 2, type: 9, mortgageused: nil, discount: 30) } + + it "renders correct content" do + render partial: "form/guidance/financial_calculations_discounted_ownership", locals: { log:, current_user: log.assigned_to } + expect(fragment).to have_content("The mortgage amount") + expect(fragment).to have_content("and cash deposit") + expect(fragment).to have_content("added together must equal") + expect(fragment).to have_content("the purchase price") + expect(fragment).to have_content("subtracted by the sum of the purchase price") + expect(fragment).to have_content("multiplied by the discount") + end + end + + context "when mortgage used is no" do + let(:log) { create(:sales_log, :completed, ownershipsch: 2, type: 9, mortgageused: 2, discount: nil) } + + it "renders correct content" do + render partial: "form/guidance/financial_calculations_discounted_ownership", locals: { log:, current_user: log.assigned_to } + expect(fragment).to have_content("Cash deposit") + expect(fragment).to have_content("must equal") + expect(fragment).to have_content("the purchase price") + expect(fragment).to have_content("subtracted by the sum of the purchase price") + expect(fragment).to have_content("multiplied by the discount") + + expect(fragment).not_to have_content("The mortgage amount") + expect(fragment).not_to have_content("added together must equal") + end + end + + context "when mortgage used is yes" do + let(:log) { create(:sales_log, :completed, ownershipsch: 2, type: 9, mortgageused: 1, mortgage: nil, discount: 30) } + + it "renders correct content" do + render partial: "form/guidance/financial_calculations_discounted_ownership", locals: { log:, current_user: log.assigned_to } + expect(fragment).to have_content("The mortgage amount") + expect(fragment).to have_content("and cash deposit") + expect(fragment).to have_content("added together must equal") + expect(fragment).to have_content("the purchase price") + expect(fragment).to have_content("subtracted by the sum of the purchase price") + expect(fragment).to have_content("multiplied by the discount") + end + end + + context "when grant is routed to" do + context "and morgage used" do + let(:log) { create(:sales_log, :completed, ownershipsch: 2, type: 22, mortgageused: 1, mortgage: nil, discount: 30) } + + it "renders correct content" do + render partial: "form/guidance/financial_calculations_discounted_ownership", locals: { log:, current_user: log.assigned_to } + expect(fragment).to have_content("The mortgage amount") + expect(fragment).to have_content("cash deposit") + expect(fragment).to have_content("and grant") + expect(fragment).to have_content("added together must equal") + expect(fragment).to have_content("the purchase price") + + expect(fragment).not_to have_content("subtracted by the sum of the purchase price") + expect(fragment).not_to have_content("multiplied by the discount") + end + end + + context "and morgage not used" do + let(:log) { create(:sales_log, :completed, ownershipsch: 2, type: 22, mortgageused: 2, grant: nil) } + + it "renders correct content" do + render partial: "form/guidance/financial_calculations_discounted_ownership", locals: { log:, current_user: log.assigned_to } + expect(fragment).to have_content("Cash deposit") + expect(fragment).to have_content("and grant") + expect(fragment).to have_content("added together must equal") + expect(fragment).to have_content("the purchase price") + + expect(fragment).not_to have_content("The mortgage amount") + expect(fragment).not_to have_content("subtracted by the sum of the purchase price") + expect(fragment).not_to have_content("multiplied by the discount") + end + end + end +end diff --git a/spec/views/form/guidance/_financial_calculations_outright_sale_spec.rb b/spec/views/form/guidance/_financial_calculations_outright_sale_spec.rb new file mode 100644 index 000000000..343239e80 --- /dev/null +++ b/spec/views/form/guidance/_financial_calculations_outright_sale_spec.rb @@ -0,0 +1,45 @@ +require "rails_helper" + +RSpec.describe "form/guidance/_financial_calculations_outright_sale.html.erb" do + let(:log) { create(:sales_log) } + + let(:fragment) { Capybara::Node::Simple.new(rendered) } + + context "when mortgage used is not answered" do + let(:log) { create(:sales_log, :outright_sale_setup_complete, ownershipsch: 3, type: 10, mortgageused: nil, discount: 30) } + + it "renders correct content" do + render partial: "form/guidance/financial_calculations_outright_sale", locals: { log:, current_user: log.assigned_to } + expect(fragment).to have_content("The mortgage amount") + expect(fragment).to have_content("and cash deposit") + expect(fragment).to have_content("added together must equal") + expect(fragment).to have_content("the purchase price") + end + end + + context "when mortgage used is no" do + let(:log) { create(:sales_log, :outright_sale_setup_complete, ownershipsch: 3, type: 10, mortgageused: 2, discount: nil) } + + it "renders correct content" do + render partial: "form/guidance/financial_calculations_outright_sale", locals: { log:, current_user: log.assigned_to } + expect(fragment).to have_content("Cash deposit") + expect(fragment).to have_content("must equal") + expect(fragment).to have_content("the purchase price") + + expect(fragment).not_to have_content("The mortgage amount") + expect(fragment).not_to have_content("added together must equal") + end + end + + context "when mortgage used is yes" do + let(:log) { create(:sales_log, :outright_sale_setup_complete, ownershipsch: 3, type: 10, mortgageused: 1, mortgage: nil, discount: 30) } + + it "renders correct content" do + render partial: "form/guidance/financial_calculations_outright_sale", locals: { log:, current_user: log.assigned_to } + expect(fragment).to have_content("The mortgage amount") + expect(fragment).to have_content("and cash deposit") + expect(fragment).to have_content("added together must equal") + expect(fragment).to have_content("the purchase price") + end + end +end