From a4a8864d9cdf7d1da0bbd9ed195c14439ba647fa Mon Sep 17 00:00:00 2001 From: kosiakkatrina <54268893+kosiakkatrina@users.noreply.github.com> Date: Wed, 7 Aug 2024 14:27:07 +0100 Subject: [PATCH] Fix up financial equations content (#2552) * Tweak shared ownership validation wording * Add top_guidance_partial to missed shared ownership questions * Update discounted ownership validation message when there's no grant * Update discounted sale guidance and errors * Lint and update test * Update BU test * Update test --- .../form/sales/questions/mortgageused.rb | 7 +- .../form/sales/questions/staircase_bought.rb | 1 + .../sales/sale_information_validations.rb | 7 +- ...calculations_discounted_ownership.html.erb | 16 +- config/locales/en.yml | 20 +-- .../sale_information_validations_spec.rb | 162 +++++++++--------- .../sales/year2024/row_parser_spec.rb | 10 +- 7 files changed, 120 insertions(+), 103 deletions(-) diff --git a/app/models/form/sales/questions/mortgageused.rb b/app/models/form/sales/questions/mortgageused.rb index 3c90a7856..acc425a77 100644 --- a/app/models/form/sales/questions/mortgageused.rb +++ b/app/models/form/sales/questions/mortgageused.rb @@ -8,7 +8,7 @@ class Form::Sales::Questions::Mortgageused < ::Form::Question @answer_options = ANSWER_OPTIONS @ownershipsch = ownershipsch @question_number = QUESTION_NUMBER_FROM_YEAR_AND_OWNERSHIP.fetch(form.start_date.year, QUESTION_NUMBER_FROM_YEAR_AND_OWNERSHIP.max_by { |k, _v| k }.last)[ownershipsch] - @top_guidance_partial = "financial_calculations_discounted_ownership" if @ownershipsch == 2 + @top_guidance_partial = top_guidance_partial end def displayed_answer_options(log, _user = nil) @@ -35,4 +35,9 @@ class Form::Sales::Questions::Mortgageused < ::Form::Question 2023 => { 1 => 90, 2 => 103, 3 => 111 }, 2024 => { 1 => 91, 2 => 104, 3 => 112 }, }.freeze + + def top_guidance_partial + return "financial_calculations_shared_ownership" if @ownershipsch == 1 + return "financial_calculations_discounted_ownership" if @ownershipsch == 2 + end end diff --git a/app/models/form/sales/questions/staircase_bought.rb b/app/models/form/sales/questions/staircase_bought.rb index 3836daba6..0a6343db4 100644 --- a/app/models/form/sales/questions/staircase_bought.rb +++ b/app/models/form/sales/questions/staircase_bought.rb @@ -11,6 +11,7 @@ class Form::Sales::Questions::StaircaseBought < ::Form::Question @step = 1 @suffix = "%" @question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max] + @top_guidance_partial = "financial_calculations_shared_ownership" end QUESTION_NUMBER_FROM_YEAR = { 2023 => 77, 2024 => 79 }.freeze diff --git a/app/models/validations/sales/sale_information_validations.rb b/app/models/validations/sales/sale_information_validations.rb index 24703890e..648b2a0bc 100644 --- a/app/models/validations/sales/sale_information_validations.rb +++ b/app/models/validations/sales/sale_information_validations.rb @@ -51,13 +51,14 @@ module Validations::Sales::SaleInformationValidations tolerance = record.discount ? record.value * 0.05 / 100 : 1 if over_tolerance?(record.mortgage_deposit_and_grant_total, record.value_with_discount, tolerance, strict: !record.discount.nil?) && record.discounted_ownership_sale? + deposit_and_grant_sentence = record.grant.present? ? ", cash deposit (#{record.field_formatted_as_currency('deposit')}), and grant (#{record.field_formatted_as_currency('grant')})" : " and cash deposit (#{record.field_formatted_as_currency('deposit')})" + discount_sentence = record.discount.present? ? " (#{record.field_formatted_as_currency('value')}) subtracted by the sum of the full purchase price (#{record.field_formatted_as_currency('value')}) multiplied by the percentage discount (#{record.discount}%)" : "" %i[mortgageused mortgage value deposit ownershipsch discount grant].each do |field| record.errors.add field, I18n.t("validations.sale_information.discounted_ownership_value", mortgage: record.mortgage&.positive? ? " (#{record.field_formatted_as_currency('mortgage')})" : "", - deposit: record.field_formatted_as_currency("deposit"), - grant: record.grant.present? ? " (#{record.field_formatted_as_currency('grant')})" : "", + deposit_and_grant_sentence:, mortgage_deposit_and_grant_total: record.field_formatted_as_currency("mortgage_deposit_and_grant_total"), - discount_sentence: record.discount.present? ? " (#{record.field_formatted_as_currency('value')}) times by the discount (#{record.discount}%)" : "", + discount_sentence:, value_with_discount: record.field_formatted_as_currency("value_with_discount")).html_safe 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 39d3ec4d4..fc507fe01 100644 --- a/app/views/form/guidance/_financial_calculations_discounted_ownership.html.erb +++ b/app/views/form/guidance/_financial_calculations_discounted_ownership.html.erb @@ -1,10 +1,20 @@ +<% discount_question_link = question_link("discount", log, current_user) %> +<% 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 <%= question_link("grant", log, current_user) %> + and grant <%= grant_question_link %> + <% end %> added together must equal - the purchase price <%= question_link("value", log, current_user) %> - multiplied by the discount stake <%= question_link("discount", log, current_user) %> + 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/config/locales/en.yml b/config/locales/en.yml index f4a0ee501..bae5e568d 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -644,8 +644,8 @@ en: must_be_after_hodate: "Sale completion date must be after practical completion or handover date" previous_property_type: property_type_bedsit: "A bedsit cannot have more than 1 bedroom" - discounted_ownership_value: "The mortgage%{mortgage}, cash deposit (%{deposit}), and grant%{grant} added together is %{mortgage_deposit_and_grant_total}.The full purchase price%{discount_sentence} is %{value_with_discount}.These two amounts should be the same." - outright_sale_value: "The mortgage%{mortgage} and deposit (%{deposit}) when added together is %{mortgage_and_deposit_total}.The full purchase price is %{value}.These two amounts should be the same." + discounted_ownership_value: "The mortgage%{mortgage}%{deposit_and_grant_sentence} added together is %{mortgage_deposit_and_grant_total}.The full purchase price%{discount_sentence} is %{value_with_discount}.These two amounts should be the same." + outright_sale_value: "The mortgage%{mortgage} and cash deposit (%{deposit}) when added together is %{mortgage_and_deposit_total}.The full purchase price is %{value}.These two amounts should be the same." monthly_rent: higher_than_expected: "Basic monthly rent must be between £0.00 and £9,999.00" grant: @@ -656,15 +656,15 @@ en: over_discounted_london_max: "The percentage discount multiplied by the purchase price is %{discount_value}. This figure should not be more than £136,400 for properties in London." over_discounted_max: "The percentage discount multiplied by the purchase price is %{discount_value}. This figure should not be more than £102,400 for properties outside of London." non_staircasing_mortgage: - mortgage_used: "The mortgage (%{mortgage}) and deposit (%{deposit}) added together is %{mortgage_and_deposit_total}.The full purchase price (%{value}) multiplied by the percentage equity stake purchased (%{equity}) is %{expected_shared_ownership_deposit_value}.These two amounts should be the same." - mortgage_not_used: "The deposit is %{deposit}.The full purchase price (%{value}) multiplied by the percentage bought is %{expected_shared_ownership_deposit_value}.These two amounts should be the same." - mortgage_used_socialhomebuy: "The mortgage amount (%{mortgage}), deposit (%{deposit}), and cash discount (%{cashdis}) added together is %{mortgage_deposit_and_discount_total}.The full purchase price (%{value}) multiplied by the percentage equity stake purchased (%{equity}) is %{expected_shared_ownership_deposit_value}.These two amounts should be the same." - mortgage_not_used_socialhomebuy: "The deposit (%{deposit}) and cash discount (%{cashdis}) added together is %{deposit_and_discount_total}.The full purchase price (%{value}) multiplied by the percentage bought (%{equity}) is %{expected_shared_ownership_deposit_value}.These two amounts should be the same." + mortgage_used: "The mortgage (%{mortgage}) and cash deposit (%{deposit}) added together is %{mortgage_and_deposit_total}.The full purchase price (%{value}) multiplied by the percentage equity stake purchased (%{equity}) is %{expected_shared_ownership_deposit_value}.These two amounts should be the same." + mortgage_not_used: "The cash deposit is %{deposit}.The full purchase price (%{value}) multiplied by the percentage bought is %{expected_shared_ownership_deposit_value}.These two amounts should be the same." + mortgage_used_socialhomebuy: "The mortgage amount (%{mortgage}), cash deposit (%{deposit}), and cash discount (%{cashdis}) added together is %{mortgage_deposit_and_discount_total}.The full purchase price (%{value}) multiplied by the percentage equity stake purchased (%{equity}) is %{expected_shared_ownership_deposit_value}.These two amounts should be the same." + mortgage_not_used_socialhomebuy: "The cash deposit (%{deposit}) and cash discount (%{cashdis}) added together is %{deposit_and_discount_total}.The full purchase price (%{value}) multiplied by the percentage bought (%{equity}) is %{expected_shared_ownership_deposit_value}.These two amounts should be the same." staircasing_mortgage: - mortgage_used: "The mortgage (%{mortgage}) and deposit (%{deposit}) added together is %{mortgage_and_deposit_total}.The full purchase price (%{value}) multiplied by the percentage bought is %{stairbought_part_of_value}.These two amounts should be the same." - mortgage_not_used: "The deposit is %{deposit}.The full purchase price (%{value}) multiplied by the percentage bought is %{stairbought_part_of_value}.These two amounts should be the same." - mortgage_used_socialhomebuy: "The mortgage amount (%{mortgage}), deposit (%{deposit}), and cash discount (%{cashdis}) added together is %{mortgage_deposit_and_discount_total}.The full purchase price (%{value}) multiplied by the percentage bought (%{stairbought}) is %{stairbought_part_of_value}.These two amounts should be the same." - mortgage_not_used_socialhomebuy: "The deposit (%{deposit}) and cash discount (%{cashdis}) added together is %{deposit_and_discount_total}.The full purchase price (%{value}) multiplied by the percentage bought (%{stairbought}) is %{stairbought_part_of_value}.These two amounts should be the same." + mortgage_used: "The mortgage (%{mortgage}) and cash deposit (%{deposit}) added together is %{mortgage_and_deposit_total}.The full purchase price (%{value}) multiplied by the percentage bought is %{stairbought_part_of_value}.These two amounts should be the same." + mortgage_not_used: "The cash deposit is %{deposit}.The full purchase price (%{value}) multiplied by the percentage bought is %{stairbought_part_of_value}.These two amounts should be the same." + mortgage_used_socialhomebuy: "The mortgage amount (%{mortgage}), cash deposit (%{deposit}), and cash discount (%{cashdis}) added together is %{mortgage_deposit_and_discount_total}.The full purchase price (%{value}) multiplied by the percentage bought (%{stairbought}) is %{stairbought_part_of_value}.These two amounts should be the same." + mortgage_not_used_socialhomebuy: "The cash deposit (%{deposit}) and cash discount (%{cashdis}) added together is %{deposit_and_discount_total}.The full purchase price (%{value}) multiplied by the percentage bought (%{stairbought}) is %{stairbought_part_of_value}.These two amounts should be the same." stairowned: mortgageused_dont_know: "The percentage owned has to be 100% if the mortgage used is 'Don’t know'" merge_request: diff --git a/spec/models/validations/sales/sale_information_validations_spec.rb b/spec/models/validations/sales/sale_information_validations_spec.rb index 7a03f64aa..6cfa71d21 100644 --- a/spec/models/validations/sales/sale_information_validations_spec.rb +++ b/spec/models/validations/sales/sale_information_validations_spec.rb @@ -345,13 +345,13 @@ RSpec.describe Validations::Sales::SaleInformationValidations do sale_information_validator.validate_discounted_ownership_value(record) - expect(record.errors["mortgageused"]).to include("The mortgage (£66,113.00), cash deposit (£0.00), and grant added together is £66,113.00.The full purchase price (£123,000.00) times by the discount (46.3%) is £66,051.00.These two amounts should be the same.") - expect(record.errors["mortgage"]).to include("The mortgage (£66,113.00), cash deposit (£0.00), and grant added together is £66,113.00.The full purchase price (£123,000.00) times by the discount (46.3%) is £66,051.00.These two amounts should be the same.") - expect(record.errors["value"]).to include("The mortgage (£66,113.00), cash deposit (£0.00), and grant added together is £66,113.00.The full purchase price (£123,000.00) times by the discount (46.3%) is £66,051.00.These two amounts should be the same.") - expect(record.errors["deposit"]).to include("The mortgage (£66,113.00), cash deposit (£0.00), and grant added together is £66,113.00.The full purchase price (£123,000.00) times by the discount (46.3%) is £66,051.00.These two amounts should be the same.") - expect(record.errors["ownershipsch"]).to include("The mortgage (£66,113.00), cash deposit (£0.00), and grant added together is £66,113.00.The full purchase price (£123,000.00) times by the discount (46.3%) is £66,051.00.These two amounts should be the same.") - expect(record.errors["discount"]).to include("The mortgage (£66,113.00), cash deposit (£0.00), and grant added together is £66,113.00.The full purchase price (£123,000.00) times by the discount (46.3%) is £66,051.00.These two amounts should be the same.") - expect(record.errors["grant"]).to include("The mortgage (£66,113.00), cash deposit (£0.00), and grant added together is £66,113.00.The full purchase price (£123,000.00) times by the discount (46.3%) is £66,051.00.These two amounts should be the same.") + expect(record.errors["mortgageused"]).to include("The mortgage (£66,113.00) and cash deposit (£0.00) added together is £66,113.00.The full purchase price (£123,000.00) subtracted by the sum of the full purchase price (£123,000.00) multiplied by the percentage discount (46.3%) is £66,051.00.These two amounts should be the same.") + expect(record.errors["mortgage"]).to include("The mortgage (£66,113.00) and cash deposit (£0.00) added together is £66,113.00.The full purchase price (£123,000.00) subtracted by the sum of the full purchase price (£123,000.00) multiplied by the percentage discount (46.3%) is £66,051.00.These two amounts should be the same.") + expect(record.errors["value"]).to include("The mortgage (£66,113.00) and cash deposit (£0.00) added together is £66,113.00.The full purchase price (£123,000.00) subtracted by the sum of the full purchase price (£123,000.00) multiplied by the percentage discount (46.3%) is £66,051.00.These two amounts should be the same.") + expect(record.errors["deposit"]).to include("The mortgage (£66,113.00) and cash deposit (£0.00) added together is £66,113.00.The full purchase price (£123,000.00) subtracted by the sum of the full purchase price (£123,000.00) multiplied by the percentage discount (46.3%) is £66,051.00.These two amounts should be the same.") + expect(record.errors["ownershipsch"]).to include("The mortgage (£66,113.00) and cash deposit (£0.00) added together is £66,113.00.The full purchase price (£123,000.00) subtracted by the sum of the full purchase price (£123,000.00) multiplied by the percentage discount (46.3%) is £66,051.00.These two amounts should be the same.") + expect(record.errors["discount"]).to include("The mortgage (£66,113.00) and cash deposit (£0.00) added together is £66,113.00.The full purchase price (£123,000.00) subtracted by the sum of the full purchase price (£123,000.00) multiplied by the percentage discount (46.3%) is £66,051.00.These two amounts should be the same.") + expect(record.errors["grant"]).to include("The mortgage (£66,113.00) and cash deposit (£0.00) added together is £66,113.00.The full purchase price (£123,000.00) subtracted by the sum of the full purchase price (£123,000.00) multiplied by the percentage discount (46.3%) is £66,051.00.These two amounts should be the same.") end it "does not add errors if mortgage and deposit total is exactly 0.05% x market value away from market value - discount" do @@ -380,13 +380,13 @@ RSpec.describe Validations::Sales::SaleInformationValidations do record.deposit = 2_000 sale_information_validator.validate_discounted_ownership_value(record) - expect(record.errors["mortgageused"]).to include("The mortgage (£10,000.00), cash deposit (£2,000.00), and grant added together is £12,000.00.The full purchase price is £30,000.00.These two amounts should be the same.") - expect(record.errors["mortgage"]).to include("The mortgage (£10,000.00), cash deposit (£2,000.00), and grant added together is £12,000.00.The full purchase price is £30,000.00.These two amounts should be the same.") - expect(record.errors["value"]).to include("The mortgage (£10,000.00), cash deposit (£2,000.00), and grant added together is £12,000.00.The full purchase price is £30,000.00.These two amounts should be the same.") - expect(record.errors["deposit"]).to include("The mortgage (£10,000.00), cash deposit (£2,000.00), and grant added together is £12,000.00.The full purchase price is £30,000.00.These two amounts should be the same.") - expect(record.errors["ownershipsch"]).to include("The mortgage (£10,000.00), cash deposit (£2,000.00), and grant added together is £12,000.00.The full purchase price is £30,000.00.These two amounts should be the same.") - expect(record.errors["discount"]).to include("The mortgage (£10,000.00), cash deposit (£2,000.00), and grant added together is £12,000.00.The full purchase price is £30,000.00.These two amounts should be the same.") - expect(record.errors["grant"]).to include("The mortgage (£10,000.00), cash deposit (£2,000.00), and grant added together is £12,000.00.The full purchase price is £30,000.00.These two amounts should be the same.") + expect(record.errors["mortgageused"]).to include("The mortgage (£10,000.00) and cash deposit (£2,000.00) added together is £12,000.00.The full purchase price is £30,000.00.These two amounts should be the same.") + expect(record.errors["mortgage"]).to include("The mortgage (£10,000.00) and cash deposit (£2,000.00) added together is £12,000.00.The full purchase price is £30,000.00.These two amounts should be the same.") + expect(record.errors["value"]).to include("The mortgage (£10,000.00) and cash deposit (£2,000.00) added together is £12,000.00.The full purchase price is £30,000.00.These two amounts should be the same.") + expect(record.errors["deposit"]).to include("The mortgage (£10,000.00) and cash deposit (£2,000.00) added together is £12,000.00.The full purchase price is £30,000.00.These two amounts should be the same.") + expect(record.errors["ownershipsch"]).to include("The mortgage (£10,000.00) and cash deposit (£2,000.00) added together is £12,000.00.The full purchase price is £30,000.00.These two amounts should be the same.") + expect(record.errors["discount"]).to include("The mortgage (£10,000.00) and cash deposit (£2,000.00) added together is £12,000.00.The full purchase price is £30,000.00.These two amounts should be the same.") + expect(record.errors["grant"]).to include("The mortgage (£10,000.00) and cash deposit (£2,000.00) added together is £12,000.00.The full purchase price is £30,000.00.These two amounts should be the same.") end it "returns false if mortgage and deposit total equals market value" do @@ -426,13 +426,13 @@ RSpec.describe Validations::Sales::SaleInformationValidations do it "returns true if mortgage, grant and deposit total does not equal market value - discount" do record.mortgage = 10 sale_information_validator.validate_discounted_ownership_value(record) - expect(record.errors["mortgageused"]).to include("The mortgage (£10.00), cash deposit (£5,000.00), and grant (£3,000.00) added together is £8,010.00.The full purchase price (£20,000.00) times by the discount (10.0%) is £18,000.00.These two amounts should be the same.") - expect(record.errors["mortgage"]).to include("The mortgage (£10.00), cash deposit (£5,000.00), and grant (£3,000.00) added together is £8,010.00.The full purchase price (£20,000.00) times by the discount (10.0%) is £18,000.00.These two amounts should be the same.") - expect(record.errors["value"]).to include("The mortgage (£10.00), cash deposit (£5,000.00), and grant (£3,000.00) added together is £8,010.00.The full purchase price (£20,000.00) times by the discount (10.0%) is £18,000.00.These two amounts should be the same.") - expect(record.errors["deposit"]).to include("The mortgage (£10.00), cash deposit (£5,000.00), and grant (£3,000.00) added together is £8,010.00.The full purchase price (£20,000.00) times by the discount (10.0%) is £18,000.00.These two amounts should be the same.") - expect(record.errors["ownershipsch"]).to include("The mortgage (£10.00), cash deposit (£5,000.00), and grant (£3,000.00) added together is £8,010.00.The full purchase price (£20,000.00) times by the discount (10.0%) is £18,000.00.These two amounts should be the same.") - expect(record.errors["discount"]).to include("The mortgage (£10.00), cash deposit (£5,000.00), and grant (£3,000.00) added together is £8,010.00.The full purchase price (£20,000.00) times by the discount (10.0%) is £18,000.00.These two amounts should be the same.") - expect(record.errors["grant"]).to include("The mortgage (£10.00), cash deposit (£5,000.00), and grant (£3,000.00) added together is £8,010.00.The full purchase price (£20,000.00) times by the discount (10.0%) is £18,000.00.These two amounts should be the same.") + expect(record.errors["mortgageused"]).to include("The mortgage (£10.00), cash deposit (£5,000.00), and grant (£3,000.00) added together is £8,010.00.The full purchase price (£20,000.00) subtracted by the sum of the full purchase price (£20,000.00) multiplied by the percentage discount (10.0%) is £18,000.00.These two amounts should be the same.") + expect(record.errors["mortgage"]).to include("The mortgage (£10.00), cash deposit (£5,000.00), and grant (£3,000.00) added together is £8,010.00.The full purchase price (£20,000.00) subtracted by the sum of the full purchase price (£20,000.00) multiplied by the percentage discount (10.0%) is £18,000.00.These two amounts should be the same.") + expect(record.errors["value"]).to include("The mortgage (£10.00), cash deposit (£5,000.00), and grant (£3,000.00) added together is £8,010.00.The full purchase price (£20,000.00) subtracted by the sum of the full purchase price (£20,000.00) multiplied by the percentage discount (10.0%) is £18,000.00.These two amounts should be the same.") + expect(record.errors["deposit"]).to include("The mortgage (£10.00), cash deposit (£5,000.00), and grant (£3,000.00) added together is £8,010.00.The full purchase price (£20,000.00) subtracted by the sum of the full purchase price (£20,000.00) multiplied by the percentage discount (10.0%) is £18,000.00.These two amounts should be the same.") + expect(record.errors["ownershipsch"]).to include("The mortgage (£10.00), cash deposit (£5,000.00), and grant (£3,000.00) added together is £8,010.00.The full purchase price (£20,000.00) subtracted by the sum of the full purchase price (£20,000.00) multiplied by the percentage discount (10.0%) is £18,000.00.These two amounts should be the same.") + expect(record.errors["discount"]).to include("The mortgage (£10.00), cash deposit (£5,000.00), and grant (£3,000.00) added together is £8,010.00.The full purchase price (£20,000.00) subtracted by the sum of the full purchase price (£20,000.00) multiplied by the percentage discount (10.0%) is £18,000.00.These two amounts should be the same.") + expect(record.errors["grant"]).to include("The mortgage (£10.00), cash deposit (£5,000.00), and grant (£3,000.00) added together is £8,010.00.The full purchase price (£20,000.00) subtracted by the sum of the full purchase price (£20,000.00) multiplied by the percentage discount (10.0%) is £18,000.00.These two amounts should be the same.") end it "returns false if mortgage, grant and deposit total equals market value - discount" do @@ -455,13 +455,13 @@ RSpec.describe Validations::Sales::SaleInformationValidations do it "returns true if grant and deposit total does not equal market value - discount" do sale_information_validator.validate_discounted_ownership_value(record) - expect(record.errors["mortgageused"]).to include("The mortgage, cash deposit (£5,000.00), and grant (£3,000.00) added together is £8,000.00.The full purchase price (£20,000.00) times by the discount (10.0%) is £18,000.00.These two amounts should be the same.") - expect(record.errors["mortgage"]).to include("The mortgage, cash deposit (£5,000.00), and grant (£3,000.00) added together is £8,000.00.The full purchase price (£20,000.00) times by the discount (10.0%) is £18,000.00.These two amounts should be the same.") - expect(record.errors["value"]).to include("The mortgage, cash deposit (£5,000.00), and grant (£3,000.00) added together is £8,000.00.The full purchase price (£20,000.00) times by the discount (10.0%) is £18,000.00.These two amounts should be the same.") - expect(record.errors["deposit"]).to include("The mortgage, cash deposit (£5,000.00), and grant (£3,000.00) added together is £8,000.00.The full purchase price (£20,000.00) times by the discount (10.0%) is £18,000.00.These two amounts should be the same.") - expect(record.errors["ownershipsch"]).to include("The mortgage, cash deposit (£5,000.00), and grant (£3,000.00) added together is £8,000.00.The full purchase price (£20,000.00) times by the discount (10.0%) is £18,000.00.These two amounts should be the same.") - expect(record.errors["discount"]).to include("The mortgage, cash deposit (£5,000.00), and grant (£3,000.00) added together is £8,000.00.The full purchase price (£20,000.00) times by the discount (10.0%) is £18,000.00.These two amounts should be the same.") - expect(record.errors["grant"]).to include("The mortgage, cash deposit (£5,000.00), and grant (£3,000.00) added together is £8,000.00.The full purchase price (£20,000.00) times by the discount (10.0%) is £18,000.00.These two amounts should be the same.") + expect(record.errors["mortgageused"]).to include("The mortgage, cash deposit (£5,000.00), and grant (£3,000.00) added together is £8,000.00.The full purchase price (£20,000.00) subtracted by the sum of the full purchase price (£20,000.00) multiplied by the percentage discount (10.0%) is £18,000.00.These two amounts should be the same.") + expect(record.errors["mortgage"]).to include("The mortgage, cash deposit (£5,000.00), and grant (£3,000.00) added together is £8,000.00.The full purchase price (£20,000.00) subtracted by the sum of the full purchase price (£20,000.00) multiplied by the percentage discount (10.0%) is £18,000.00.These two amounts should be the same.") + expect(record.errors["value"]).to include("The mortgage, cash deposit (£5,000.00), and grant (£3,000.00) added together is £8,000.00.The full purchase price (£20,000.00) subtracted by the sum of the full purchase price (£20,000.00) multiplied by the percentage discount (10.0%) is £18,000.00.These two amounts should be the same.") + expect(record.errors["deposit"]).to include("The mortgage, cash deposit (£5,000.00), and grant (£3,000.00) added together is £8,000.00.The full purchase price (£20,000.00) subtracted by the sum of the full purchase price (£20,000.00) multiplied by the percentage discount (10.0%) is £18,000.00.These two amounts should be the same.") + expect(record.errors["ownershipsch"]).to include("The mortgage, cash deposit (£5,000.00), and grant (£3,000.00) added together is £8,000.00.The full purchase price (£20,000.00) subtracted by the sum of the full purchase price (£20,000.00) multiplied by the percentage discount (10.0%) is £18,000.00.These two amounts should be the same.") + expect(record.errors["discount"]).to include("The mortgage, cash deposit (£5,000.00), and grant (£3,000.00) added together is £8,000.00.The full purchase price (£20,000.00) subtracted by the sum of the full purchase price (£20,000.00) multiplied by the percentage discount (10.0%) is £18,000.00.These two amounts should be the same.") + expect(record.errors["grant"]).to include("The mortgage, cash deposit (£5,000.00), and grant (£3,000.00) added together is £8,000.00.The full purchase price (£20,000.00) subtracted by the sum of the full purchase price (£20,000.00) multiplied by the percentage discount (10.0%) is £18,000.00.These two amounts should be the same.") end it "returns false if mortgage, grant and deposit total equals market value - discount" do @@ -538,11 +538,11 @@ RSpec.describe Validations::Sales::SaleInformationValidations do it "adds errors" do sale_information_validator.validate_outright_sale_value_matches_mortgage_plus_deposit(record) - expect(record.errors["mortgageused"]).to include("The mortgage (£100,000.00) and deposit (£100,000.00) when added together is £200,000.00.The full purchase price is £300,000.00.These two amounts should be the same.") - expect(record.errors["mortgage"]).to include("The mortgage (£100,000.00) and deposit (£100,000.00) when added together is £200,000.00.The full purchase price is £300,000.00.These two amounts should be the same.") - expect(record.errors["deposit"]).to include("The mortgage (£100,000.00) and deposit (£100,000.00) when added together is £200,000.00.The full purchase price is £300,000.00.These two amounts should be the same.") - expect(record.errors["value"]).to include("The mortgage (£100,000.00) and deposit (£100,000.00) when added together is £200,000.00.The full purchase price is £300,000.00.These two amounts should be the same.") - expect(record.errors["ownershipsch"]).to include("The mortgage (£100,000.00) and deposit (£100,000.00) when added together is £200,000.00.The full purchase price is £300,000.00.These two amounts should be the same.") + expect(record.errors["mortgageused"]).to include("The mortgage (£100,000.00) and cash deposit (£100,000.00) when added together is £200,000.00.The full purchase price is £300,000.00.These two amounts should be the same.") + expect(record.errors["mortgage"]).to include("The mortgage (£100,000.00) and cash deposit (£100,000.00) when added together is £200,000.00.The full purchase price is £300,000.00.These two amounts should be the same.") + expect(record.errors["deposit"]).to include("The mortgage (£100,000.00) and cash deposit (£100,000.00) when added together is £200,000.00.The full purchase price is £300,000.00.These two amounts should be the same.") + expect(record.errors["value"]).to include("The mortgage (£100,000.00) and cash deposit (£100,000.00) when added together is £200,000.00.The full purchase price is £300,000.00.These two amounts should be the same.") + expect(record.errors["ownershipsch"]).to include("The mortgage (£100,000.00) and cash deposit (£100,000.00) when added together is £200,000.00.The full purchase price is £300,000.00.These two amounts should be the same.") end end @@ -868,12 +868,12 @@ RSpec.describe Validations::Sales::SaleInformationValidations do it "adds an error" do sale_information_validator.validate_non_staircasing_mortgage(record) - expect(record.errors["mortgage"]).to include("The mortgage (£10,000.00) and deposit (£5,000.00) added together is £15,000.00.The full purchase price (£30,000.00) multiplied by the percentage equity stake purchased (28.0%) is £8,400.00.These two amounts should be the same.") - expect(record.errors["value"]).to include("The mortgage (£10,000.00) and deposit (£5,000.00) added together is £15,000.00.The full purchase price (£30,000.00) multiplied by the percentage equity stake purchased (28.0%) is £8,400.00.These two amounts should be the same.") - expect(record.errors["deposit"]).to include("The mortgage (£10,000.00) and deposit (£5,000.00) added together is £15,000.00.The full purchase price (£30,000.00) multiplied by the percentage equity stake purchased (28.0%) is £8,400.00.These two amounts should be the same.") - expect(record.errors["equity"]).to include("The mortgage (£10,000.00) and deposit (£5,000.00) added together is £15,000.00.The full purchase price (£30,000.00) multiplied by the percentage equity stake purchased (28.0%) is £8,400.00.These two amounts should be the same.") - expect(record.errors["type"]).to include("The mortgage (£10,000.00) and deposit (£5,000.00) added together is £15,000.00.The full purchase price (£30,000.00) multiplied by the percentage equity stake purchased (28.0%) is £8,400.00.These two amounts should be the same.") - expect(record.errors["cashdis"]).not_to include("The mortgage (£10,000.00) and deposit (£5,000.00) added together is £15,000.00.The full purchase price (£30,000.00) multiplied by the percentage equity stake purchased (28.0%) is £8,400.00.These two amounts should be the same.") + expect(record.errors["mortgage"]).to include("The mortgage (£10,000.00) and cash deposit (£5,000.00) added together is £15,000.00.The full purchase price (£30,000.00) multiplied by the percentage equity stake purchased (28.0%) is £8,400.00.These two amounts should be the same.") + expect(record.errors["value"]).to include("The mortgage (£10,000.00) and cash deposit (£5,000.00) added together is £15,000.00.The full purchase price (£30,000.00) multiplied by the percentage equity stake purchased (28.0%) is £8,400.00.These two amounts should be the same.") + expect(record.errors["deposit"]).to include("The mortgage (£10,000.00) and cash deposit (£5,000.00) added together is £15,000.00.The full purchase price (£30,000.00) multiplied by the percentage equity stake purchased (28.0%) is £8,400.00.These two amounts should be the same.") + expect(record.errors["equity"]).to include("The mortgage (£10,000.00) and cash deposit (£5,000.00) added together is £15,000.00.The full purchase price (£30,000.00) multiplied by the percentage equity stake purchased (28.0%) is £8,400.00.These two amounts should be the same.") + expect(record.errors["type"]).to include("The mortgage (£10,000.00) and cash deposit (£5,000.00) added together is £15,000.00.The full purchase price (£30,000.00) multiplied by the percentage equity stake purchased (28.0%) is £8,400.00.These two amounts should be the same.") + expect(record.errors["cashdis"]).not_to include("The mortgage (£10,000.00) and cash deposit (£5,000.00) added together is £15,000.00.The full purchase price (£30,000.00) multiplied by the percentage equity stake purchased (28.0%) is £8,400.00.These two amounts should be the same.") end context "and it is a social homebuy" do @@ -884,12 +884,12 @@ RSpec.describe Validations::Sales::SaleInformationValidations do it "adds an error" do sale_information_validator.validate_non_staircasing_mortgage(record) - expect(record.errors["mortgage"]).to include("The mortgage amount (£10,000.00), deposit (£5,000.00), and cash discount (£200.00) added together is £15,200.00.The full purchase price (£30,000.00) multiplied by the percentage equity stake purchased (28.0%) is £8,400.00.These two amounts should be the same.") - expect(record.errors["value"]).to include("The mortgage amount (£10,000.00), deposit (£5,000.00), and cash discount (£200.00) added together is £15,200.00.The full purchase price (£30,000.00) multiplied by the percentage equity stake purchased (28.0%) is £8,400.00.These two amounts should be the same.") - expect(record.errors["deposit"]).to include("The mortgage amount (£10,000.00), deposit (£5,000.00), and cash discount (£200.00) added together is £15,200.00.The full purchase price (£30,000.00) multiplied by the percentage equity stake purchased (28.0%) is £8,400.00.These two amounts should be the same.") - expect(record.errors["equity"]).to include("The mortgage amount (£10,000.00), deposit (£5,000.00), and cash discount (£200.00) added together is £15,200.00.The full purchase price (£30,000.00) multiplied by the percentage equity stake purchased (28.0%) is £8,400.00.These two amounts should be the same.") - expect(record.errors["cashdis"]).to include("The mortgage amount (£10,000.00), deposit (£5,000.00), and cash discount (£200.00) added together is £15,200.00.The full purchase price (£30,000.00) multiplied by the percentage equity stake purchased (28.0%) is £8,400.00.These two amounts should be the same.") - expect(record.errors["type"]).to include("The mortgage amount (£10,000.00), deposit (£5,000.00), and cash discount (£200.00) added together is £15,200.00.The full purchase price (£30,000.00) multiplied by the percentage equity stake purchased (28.0%) is £8,400.00.These two amounts should be the same.") + expect(record.errors["mortgage"]).to include("The mortgage amount (£10,000.00), cash deposit (£5,000.00), and cash discount (£200.00) added together is £15,200.00.The full purchase price (£30,000.00) multiplied by the percentage equity stake purchased (28.0%) is £8,400.00.These two amounts should be the same.") + expect(record.errors["value"]).to include("The mortgage amount (£10,000.00), cash deposit (£5,000.00), and cash discount (£200.00) added together is £15,200.00.The full purchase price (£30,000.00) multiplied by the percentage equity stake purchased (28.0%) is £8,400.00.These two amounts should be the same.") + expect(record.errors["deposit"]).to include("The mortgage amount (£10,000.00), cash deposit (£5,000.00), and cash discount (£200.00) added together is £15,200.00.The full purchase price (£30,000.00) multiplied by the percentage equity stake purchased (28.0%) is £8,400.00.These two amounts should be the same.") + expect(record.errors["equity"]).to include("The mortgage amount (£10,000.00), cash deposit (£5,000.00), and cash discount (£200.00) added together is £15,200.00.The full purchase price (£30,000.00) multiplied by the percentage equity stake purchased (28.0%) is £8,400.00.These two amounts should be the same.") + expect(record.errors["cashdis"]).to include("The mortgage amount (£10,000.00), cash deposit (£5,000.00), and cash discount (£200.00) added together is £15,200.00.The full purchase price (£30,000.00) multiplied by the percentage equity stake purchased (28.0%) is £8,400.00.These two amounts should be the same.") + expect(record.errors["type"]).to include("The mortgage amount (£10,000.00), cash deposit (£5,000.00), and cash discount (£200.00) added together is £15,200.00.The full purchase price (£30,000.00) multiplied by the percentage equity stake purchased (28.0%) is £8,400.00.These two amounts should be the same.") end end @@ -968,12 +968,12 @@ RSpec.describe Validations::Sales::SaleInformationValidations do it "adds an error" do sale_information_validator.validate_non_staircasing_mortgage(record) - expect(record.errors["mortgageused"]).to include("The deposit is £5,000.00.The full purchase price (£30,000.00) multiplied by the percentage bought is £8,400.00.These two amounts should be the same.") - expect(record.errors["value"]).to include("The deposit is £5,000.00.The full purchase price (£30,000.00) multiplied by the percentage bought is £8,400.00.These two amounts should be the same.") - expect(record.errors["deposit"]).to include("The deposit is £5,000.00.The full purchase price (£30,000.00) multiplied by the percentage bought is £8,400.00.These two amounts should be the same.") - expect(record.errors["equity"]).to include("The deposit is £5,000.00.The full purchase price (£30,000.00) multiplied by the percentage bought is £8,400.00.These two amounts should be the same.") - expect(record.errors["type"]).to include("The deposit is £5,000.00.The full purchase price (£30,000.00) multiplied by the percentage bought is £8,400.00.These two amounts should be the same.") - expect(record.errors["cashdis"]).not_to include("The deposit is £5,000.00.The full purchase price (£30,000.00) multiplied by the percentage bought is £8,400.00.These two amounts should be the same.") + expect(record.errors["mortgageused"]).to include("The cash deposit is £5,000.00.The full purchase price (£30,000.00) multiplied by the percentage bought is £8,400.00.These two amounts should be the same.") + expect(record.errors["value"]).to include("The cash deposit is £5,000.00.The full purchase price (£30,000.00) multiplied by the percentage bought is £8,400.00.These two amounts should be the same.") + expect(record.errors["deposit"]).to include("The cash deposit is £5,000.00.The full purchase price (£30,000.00) multiplied by the percentage bought is £8,400.00.These two amounts should be the same.") + expect(record.errors["equity"]).to include("The cash deposit is £5,000.00.The full purchase price (£30,000.00) multiplied by the percentage bought is £8,400.00.These two amounts should be the same.") + expect(record.errors["type"]).to include("The cash deposit is £5,000.00.The full purchase price (£30,000.00) multiplied by the percentage bought is £8,400.00.These two amounts should be the same.") + expect(record.errors["cashdis"]).not_to include("The cash deposit is £5,000.00.The full purchase price (£30,000.00) multiplied by the percentage bought is £8,400.00.These two amounts should be the same.") end context "and it is a social homebuy" do @@ -984,12 +984,12 @@ RSpec.describe Validations::Sales::SaleInformationValidations do it "adds an error" do sale_information_validator.validate_non_staircasing_mortgage(record) - expect(record.errors["mortgageused"]).to include("The deposit (£5,000.00) and cash discount (£200.00) added together is £5,200.00.The full purchase price (£30,000.00) multiplied by the percentage bought (28.0%) is £8,400.00.These two amounts should be the same.") - expect(record.errors["value"]).to include("The deposit (£5,000.00) and cash discount (£200.00) added together is £5,200.00.The full purchase price (£30,000.00) multiplied by the percentage bought (28.0%) is £8,400.00.These two amounts should be the same.") - expect(record.errors["deposit"]).to include("The deposit (£5,000.00) and cash discount (£200.00) added together is £5,200.00.The full purchase price (£30,000.00) multiplied by the percentage bought (28.0%) is £8,400.00.These two amounts should be the same.") - expect(record.errors["equity"]).to include("The deposit (£5,000.00) and cash discount (£200.00) added together is £5,200.00.The full purchase price (£30,000.00) multiplied by the percentage bought (28.0%) is £8,400.00.These two amounts should be the same.") - expect(record.errors["cashdis"]).to include("The deposit (£5,000.00) and cash discount (£200.00) added together is £5,200.00.The full purchase price (£30,000.00) multiplied by the percentage bought (28.0%) is £8,400.00.These two amounts should be the same.") - expect(record.errors["type"]).to include("The deposit (£5,000.00) and cash discount (£200.00) added together is £5,200.00.The full purchase price (£30,000.00) multiplied by the percentage bought (28.0%) is £8,400.00.These two amounts should be the same.") + expect(record.errors["mortgageused"]).to include("The cash deposit (£5,000.00) and cash discount (£200.00) added together is £5,200.00.The full purchase price (£30,000.00) multiplied by the percentage bought (28.0%) is £8,400.00.These two amounts should be the same.") + expect(record.errors["value"]).to include("The cash deposit (£5,000.00) and cash discount (£200.00) added together is £5,200.00.The full purchase price (£30,000.00) multiplied by the percentage bought (28.0%) is £8,400.00.These two amounts should be the same.") + expect(record.errors["deposit"]).to include("The cash deposit (£5,000.00) and cash discount (£200.00) added together is £5,200.00.The full purchase price (£30,000.00) multiplied by the percentage bought (28.0%) is £8,400.00.These two amounts should be the same.") + expect(record.errors["equity"]).to include("The cash deposit (£5,000.00) and cash discount (£200.00) added together is £5,200.00.The full purchase price (£30,000.00) multiplied by the percentage bought (28.0%) is £8,400.00.These two amounts should be the same.") + expect(record.errors["cashdis"]).to include("The cash deposit (£5,000.00) and cash discount (£200.00) added together is £5,200.00.The full purchase price (£30,000.00) multiplied by the percentage bought (28.0%) is £8,400.00.These two amounts should be the same.") + expect(record.errors["type"]).to include("The cash deposit (£5,000.00) and cash discount (£200.00) added together is £5,200.00.The full purchase price (£30,000.00) multiplied by the percentage bought (28.0%) is £8,400.00.These two amounts should be the same.") end end @@ -1087,12 +1087,12 @@ RSpec.describe Validations::Sales::SaleInformationValidations do it "adds an error" do sale_information_validator.validate_staircasing_mortgage(record) - expect(record.errors["mortgage"]).to include("The mortgage (£10,000.00) and deposit (£5,000.00) added together is £15,000.00.The full purchase price (£30,000.00) multiplied by the percentage bought is £8,400.00.These two amounts should be the same.") - expect(record.errors["value"]).to include("The mortgage (£10,000.00) and deposit (£5,000.00) added together is £15,000.00.The full purchase price (£30,000.00) multiplied by the percentage bought is £8,400.00.These two amounts should be the same.") - expect(record.errors["deposit"]).to include("The mortgage (£10,000.00) and deposit (£5,000.00) added together is £15,000.00.The full purchase price (£30,000.00) multiplied by the percentage bought is £8,400.00.These two amounts should be the same.") - expect(record.errors["stairbought"]).to include("The mortgage (£10,000.00) and deposit (£5,000.00) added together is £15,000.00.The full purchase price (£30,000.00) multiplied by the percentage bought is £8,400.00.These two amounts should be the same.") - expect(record.errors["type"]).to include("The mortgage (£10,000.00) and deposit (£5,000.00) added together is £15,000.00.The full purchase price (£30,000.00) multiplied by the percentage bought is £8,400.00.These two amounts should be the same.") - expect(record.errors["cashdis"]).not_to include("The mortgage (£10,000.00) and deposit (£5,000.00) added together is £15,000.00.The full purchase price (£30,000.00) multiplied by the percentage bought is £8,400.00.These two amounts should be the same.") + expect(record.errors["mortgage"]).to include("The mortgage (£10,000.00) and cash deposit (£5,000.00) added together is £15,000.00.The full purchase price (£30,000.00) multiplied by the percentage bought is £8,400.00.These two amounts should be the same.") + expect(record.errors["value"]).to include("The mortgage (£10,000.00) and cash deposit (£5,000.00) added together is £15,000.00.The full purchase price (£30,000.00) multiplied by the percentage bought is £8,400.00.These two amounts should be the same.") + expect(record.errors["deposit"]).to include("The mortgage (£10,000.00) and cash deposit (£5,000.00) added together is £15,000.00.The full purchase price (£30,000.00) multiplied by the percentage bought is £8,400.00.These two amounts should be the same.") + expect(record.errors["stairbought"]).to include("The mortgage (£10,000.00) and cash deposit (£5,000.00) added together is £15,000.00.The full purchase price (£30,000.00) multiplied by the percentage bought is £8,400.00.These two amounts should be the same.") + expect(record.errors["type"]).to include("The mortgage (£10,000.00) and cash deposit (£5,000.00) added together is £15,000.00.The full purchase price (£30,000.00) multiplied by the percentage bought is £8,400.00.These two amounts should be the same.") + expect(record.errors["cashdis"]).not_to include("The mortgage (£10,000.00) and cash deposit (£5,000.00) added together is £15,000.00.The full purchase price (£30,000.00) multiplied by the percentage bought is £8,400.00.These two amounts should be the same.") end context "and it is a social homebuy" do @@ -1103,12 +1103,12 @@ RSpec.describe Validations::Sales::SaleInformationValidations do it "adds an error" do sale_information_validator.validate_staircasing_mortgage(record) - expect(record.errors["mortgage"]).to include("The mortgage amount (£10,000.00), deposit (£5,000.00), and cash discount (£200.00) added together is £15,200.00.The full purchase price (£30,000.00) multiplied by the percentage bought (28%) is £8,400.00.These two amounts should be the same.") - expect(record.errors["value"]).to include("The mortgage amount (£10,000.00), deposit (£5,000.00), and cash discount (£200.00) added together is £15,200.00.The full purchase price (£30,000.00) multiplied by the percentage bought (28%) is £8,400.00.These two amounts should be the same.") - expect(record.errors["deposit"]).to include("The mortgage amount (£10,000.00), deposit (£5,000.00), and cash discount (£200.00) added together is £15,200.00.The full purchase price (£30,000.00) multiplied by the percentage bought (28%) is £8,400.00.These two amounts should be the same.") - expect(record.errors["stairbought"]).to include("The mortgage amount (£10,000.00), deposit (£5,000.00), and cash discount (£200.00) added together is £15,200.00.The full purchase price (£30,000.00) multiplied by the percentage bought (28%) is £8,400.00.These two amounts should be the same.") - expect(record.errors["cashdis"]).to include("The mortgage amount (£10,000.00), deposit (£5,000.00), and cash discount (£200.00) added together is £15,200.00.The full purchase price (£30,000.00) multiplied by the percentage bought (28%) is £8,400.00.These two amounts should be the same.") - expect(record.errors["type"]).to include("The mortgage amount (£10,000.00), deposit (£5,000.00), and cash discount (£200.00) added together is £15,200.00.The full purchase price (£30,000.00) multiplied by the percentage bought (28%) is £8,400.00.These two amounts should be the same.") + expect(record.errors["mortgage"]).to include("The mortgage amount (£10,000.00), cash deposit (£5,000.00), and cash discount (£200.00) added together is £15,200.00.The full purchase price (£30,000.00) multiplied by the percentage bought (28%) is £8,400.00.These two amounts should be the same.") + expect(record.errors["value"]).to include("The mortgage amount (£10,000.00), cash deposit (£5,000.00), and cash discount (£200.00) added together is £15,200.00.The full purchase price (£30,000.00) multiplied by the percentage bought (28%) is £8,400.00.These two amounts should be the same.") + expect(record.errors["deposit"]).to include("The mortgage amount (£10,000.00), cash deposit (£5,000.00), and cash discount (£200.00) added together is £15,200.00.The full purchase price (£30,000.00) multiplied by the percentage bought (28%) is £8,400.00.These two amounts should be the same.") + expect(record.errors["stairbought"]).to include("The mortgage amount (£10,000.00), cash deposit (£5,000.00), and cash discount (£200.00) added together is £15,200.00.The full purchase price (£30,000.00) multiplied by the percentage bought (28%) is £8,400.00.These two amounts should be the same.") + expect(record.errors["cashdis"]).to include("The mortgage amount (£10,000.00), cash deposit (£5,000.00), and cash discount (£200.00) added together is £15,200.00.The full purchase price (£30,000.00) multiplied by the percentage bought (28%) is £8,400.00.These two amounts should be the same.") + expect(record.errors["type"]).to include("The mortgage amount (£10,000.00), cash deposit (£5,000.00), and cash discount (£200.00) added together is £15,200.00.The full purchase price (£30,000.00) multiplied by the percentage bought (28%) is £8,400.00.These two amounts should be the same.") end end @@ -1206,12 +1206,12 @@ RSpec.describe Validations::Sales::SaleInformationValidations do it "adds an error" do sale_information_validator.validate_staircasing_mortgage(record) - expect(record.errors["mortgageused"]).to include("The deposit is £5,000.00.The full purchase price (£30,000.00) multiplied by the percentage bought is £8,400.00.These two amounts should be the same.") - expect(record.errors["value"]).to include("The deposit is £5,000.00.The full purchase price (£30,000.00) multiplied by the percentage bought is £8,400.00.These two amounts should be the same.") - expect(record.errors["deposit"]).to include("The deposit is £5,000.00.The full purchase price (£30,000.00) multiplied by the percentage bought is £8,400.00.These two amounts should be the same.") - expect(record.errors["stairbought"]).to include("The deposit is £5,000.00.The full purchase price (£30,000.00) multiplied by the percentage bought is £8,400.00.These two amounts should be the same.") - expect(record.errors["type"]).to include("The deposit is £5,000.00.The full purchase price (£30,000.00) multiplied by the percentage bought is £8,400.00.These two amounts should be the same.") - expect(record.errors["cashdis"]).not_to include("The deposit is £5,000.00.The full purchase price (£30,000.00) multiplied by the percentage bought is £8,400.00.These two amounts should be the same.") + expect(record.errors["mortgageused"]).to include("The cash deposit is £5,000.00.The full purchase price (£30,000.00) multiplied by the percentage bought is £8,400.00.These two amounts should be the same.") + expect(record.errors["value"]).to include("The cash deposit is £5,000.00.The full purchase price (£30,000.00) multiplied by the percentage bought is £8,400.00.These two amounts should be the same.") + expect(record.errors["deposit"]).to include("The cash deposit is £5,000.00.The full purchase price (£30,000.00) multiplied by the percentage bought is £8,400.00.These two amounts should be the same.") + expect(record.errors["stairbought"]).to include("The cash deposit is £5,000.00.The full purchase price (£30,000.00) multiplied by the percentage bought is £8,400.00.These two amounts should be the same.") + expect(record.errors["type"]).to include("The cash deposit is £5,000.00.The full purchase price (£30,000.00) multiplied by the percentage bought is £8,400.00.These two amounts should be the same.") + expect(record.errors["cashdis"]).not_to include("The cash deposit is £5,000.00.The full purchase price (£30,000.00) multiplied by the percentage bought is £8,400.00.These two amounts should be the same.") end context "and it is a social homebuy" do @@ -1222,12 +1222,12 @@ RSpec.describe Validations::Sales::SaleInformationValidations do it "adds an error" do sale_information_validator.validate_staircasing_mortgage(record) - expect(record.errors["mortgageused"]).to include("The deposit (£5,000.00) and cash discount (£200.00) added together is £5,200.00.The full purchase price (£30,000.00) multiplied by the percentage bought (28%) is £8,400.00.These two amounts should be the same.") - expect(record.errors["value"]).to include("The deposit (£5,000.00) and cash discount (£200.00) added together is £5,200.00.The full purchase price (£30,000.00) multiplied by the percentage bought (28%) is £8,400.00.These two amounts should be the same.") - expect(record.errors["deposit"]).to include("The deposit (£5,000.00) and cash discount (£200.00) added together is £5,200.00.The full purchase price (£30,000.00) multiplied by the percentage bought (28%) is £8,400.00.These two amounts should be the same.") - expect(record.errors["stairbought"]).to include("The deposit (£5,000.00) and cash discount (£200.00) added together is £5,200.00.The full purchase price (£30,000.00) multiplied by the percentage bought (28%) is £8,400.00.These two amounts should be the same.") - expect(record.errors["cashdis"]).to include("The deposit (£5,000.00) and cash discount (£200.00) added together is £5,200.00.The full purchase price (£30,000.00) multiplied by the percentage bought (28%) is £8,400.00.These two amounts should be the same.") - expect(record.errors["type"]).to include("The deposit (£5,000.00) and cash discount (£200.00) added together is £5,200.00.The full purchase price (£30,000.00) multiplied by the percentage bought (28%) is £8,400.00.These two amounts should be the same.") + expect(record.errors["mortgageused"]).to include("The cash deposit (£5,000.00) and cash discount (£200.00) added together is £5,200.00.The full purchase price (£30,000.00) multiplied by the percentage bought (28%) is £8,400.00.These two amounts should be the same.") + expect(record.errors["value"]).to include("The cash deposit (£5,000.00) and cash discount (£200.00) added together is £5,200.00.The full purchase price (£30,000.00) multiplied by the percentage bought (28%) is £8,400.00.These two amounts should be the same.") + expect(record.errors["deposit"]).to include("The cash deposit (£5,000.00) and cash discount (£200.00) added together is £5,200.00.The full purchase price (£30,000.00) multiplied by the percentage bought (28%) is £8,400.00.These two amounts should be the same.") + expect(record.errors["stairbought"]).to include("The cash deposit (£5,000.00) and cash discount (£200.00) added together is £5,200.00.The full purchase price (£30,000.00) multiplied by the percentage bought (28%) is £8,400.00.These two amounts should be the same.") + expect(record.errors["cashdis"]).to include("The cash deposit (£5,000.00) and cash discount (£200.00) added together is £5,200.00.The full purchase price (£30,000.00) multiplied by the percentage bought (28%) is £8,400.00.These two amounts should be the same.") + expect(record.errors["type"]).to include("The cash deposit (£5,000.00) and cash discount (£200.00) added together is £5,200.00.The full purchase price (£30,000.00) multiplied by the percentage bought (28%) is £8,400.00.These two amounts should be the same.") end end diff --git a/spec/services/bulk_upload/sales/year2024/row_parser_spec.rb b/spec/services/bulk_upload/sales/year2024/row_parser_spec.rb index e086159cb..f19a61d78 100644 --- a/spec/services/bulk_upload/sales/year2024/row_parser_spec.rb +++ b/spec/services/bulk_upload/sales/year2024/row_parser_spec.rb @@ -1341,10 +1341,10 @@ RSpec.describe BulkUpload::Sales::Year2024::RowParser do it "includes errors on other related fields" do parser.valid? - expect(parser.errors[:field_104]).to include("The mortgage (£10,000.00) and deposit (£5,000.00) added together is £15,000.00.The full purchase price (£30,000.00) multiplied by the percentage equity stake purchased (28.0%) is £8,400.00.These two amounts should be the same.") - expect(parser.errors[:field_109]).to include("The mortgage (£10,000.00) and deposit (£5,000.00) added together is £15,000.00.The full purchase price (£30,000.00) multiplied by the percentage equity stake purchased (28.0%) is £8,400.00.These two amounts should be the same.") - expect(parser.errors[:field_101]).to include("The mortgage (£10,000.00) and deposit (£5,000.00) added together is £15,000.00.The full purchase price (£30,000.00) multiplied by the percentage equity stake purchased (28.0%) is £8,400.00.These two amounts should be the same.") - expect(parser.errors[:field_102]).to include("The mortgage (£10,000.00) and deposit (£5,000.00) added together is £15,000.00.The full purchase price (£30,000.00) multiplied by the percentage equity stake purchased (28.0%) is £8,400.00.These two amounts should be the same.") + expect(parser.errors[:field_104]).to include("The mortgage (£10,000.00) and cash deposit (£5,000.00) added together is £15,000.00.The full purchase price (£30,000.00) multiplied by the percentage equity stake purchased (28.0%) is £8,400.00.These two amounts should be the same.") + expect(parser.errors[:field_109]).to include("The mortgage (£10,000.00) and cash deposit (£5,000.00) added together is £15,000.00.The full purchase price (£30,000.00) multiplied by the percentage equity stake purchased (28.0%) is £8,400.00.These two amounts should be the same.") + expect(parser.errors[:field_101]).to include("The mortgage (£10,000.00) and cash deposit (£5,000.00) added together is £15,000.00.The full purchase price (£30,000.00) multiplied by the percentage equity stake purchased (28.0%) is £8,400.00.These two amounts should be the same.") + expect(parser.errors[:field_102]).to include("The mortgage (£10,000.00) and cash deposit (£5,000.00) added together is £15,000.00.The full purchase price (£30,000.00) multiplied by the percentage equity stake purchased (28.0%) is £8,400.00.These two amounts should be the same.") end it "does not add errors to other ownership type fields" do @@ -1379,7 +1379,7 @@ RSpec.describe BulkUpload::Sales::Year2024::RowParser do it "only adds errors to the discounted ownership field" do parser.valid? expect(parser.errors[:field_103]).to be_empty - expect(parser.errors[:field_117]).to include("The mortgage, cash deposit (£100.00), and grant added together is £100.00.The full purchase price (£100.00) times by the discount (10.0%) is £90.00.These two amounts should be the same.") + expect(parser.errors[:field_117]).to include("The mortgage and cash deposit (£100.00) added together is £100.00.The full purchase price (£100.00) subtracted by the sum of the full purchase price (£100.00) multiplied by the percentage discount (10.0%) is £90.00.These two amounts should be the same.") expect(parser.errors[:field_126]).to be_empty end end