From e86deada6275a553abaf30ce86c1516fb6aaeec2 Mon Sep 17 00:00:00 2001 From: Jack S Date: Thu, 6 Apr 2023 10:10:42 +0100 Subject: [PATCH] format discounted_ownership_value --- .../sales/sale_information_validations.rb | 9 ++- config/locales/en.yml | 2 +- .../sale_information_validations_spec.rb | 63 +++++++++++-------- 3 files changed, 47 insertions(+), 27 deletions(-) diff --git a/app/models/validations/sales/sale_information_validations.rb b/app/models/validations/sales/sale_information_validations.rb index fcd1854f4..e4714e81a 100644 --- a/app/models/validations/sales/sale_information_validations.rb +++ b/app/models/validations/sales/sale_information_validations.rb @@ -1,5 +1,6 @@ module Validations::Sales::SaleInformationValidations include CollectionTimeHelper + include MoneyFormattingHelper def validate_practical_completion_date_before_saledate(record) return if record.saledate.blank? || record.hodate.blank? @@ -54,7 +55,13 @@ module Validations::Sales::SaleInformationValidations if record.mortgage_deposit_and_grant_total != record.value_with_discount && record.discounted_ownership_sale? %i[mortgage deposit grant value discount ownershipsch].each do |field| - record.errors.add field, I18n.t("validations.sale_information.discounted_ownership_value", value_with_discount: sprintf("%.2f", record.value_with_discount)) + record.errors.add( + field, + I18n.t( + "validations.sale_information.discounted_ownership_value", + value_with_discount: format_as_currency(record.value_with_discount), + ), + ) end end end diff --git a/config/locales/en.yml b/config/locales/en.yml index bcfe32f46..196022b45 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -491,7 +491,7 @@ 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: "Mortgage, deposit, and grant total must equal £%{value_with_discount}" + discounted_ownership_value: "Mortgage, deposit, and grant total must equal %{value_with_discount}" monthly_rent: higher_than_expected: "Basic monthly rent must be between £0 and £9,999" diff --git a/spec/models/validations/sales/sale_information_validations_spec.rb b/spec/models/validations/sales/sale_information_validations_spec.rb index 3a8944e79..cccb19d40 100644 --- a/spec/models/validations/sales/sale_information_validations_spec.rb +++ b/spec/models/validations/sales/sale_information_validations_spec.rb @@ -246,11 +246,13 @@ RSpec.describe Validations::Sales::SaleInformationValidations do it "adds an error if mortgage, deposit and grant total does not equal market value" do record.grant = 3_000 sale_information_validator.validate_discounted_ownership_value(record) - expect(record.errors[:mortgage]).to include(I18n.t("validations.sale_information.discounted_ownership_value", value_with_discount: "30000.00")) - expect(record.errors[:deposit]).to include(I18n.t("validations.sale_information.discounted_ownership_value", value_with_discount: "30000.00")) - expect(record.errors[:grant]).to include(I18n.t("validations.sale_information.discounted_ownership_value", value_with_discount: "30000.00")) - expect(record.errors[:value]).to include(I18n.t("validations.sale_information.discounted_ownership_value", value_with_discount: "30000.00")) - expect(record.errors[:discount]).to include(I18n.t("validations.sale_information.discounted_ownership_value", value_with_discount: "30000.00")) + expected_message = ["Mortgage, deposit, and grant total must equal £30,000.00"] + + expect(record.errors[:mortgage]).to eq(expected_message) + expect(record.errors[:deposit]).to eq(expected_message) + expect(record.errors[:grant]).to eq(expected_message) + expect(record.errors[:value]).to eq(expected_message) + expect(record.errors[:discount]).to eq(expected_message) end it "does not add an error if mortgage, deposit and grant total equals market value" do @@ -280,11 +282,14 @@ RSpec.describe Validations::Sales::SaleInformationValidations do it "adds an error if mortgage and deposit total does not equal market value - discount" do record.discount = 10 sale_information_validator.validate_discounted_ownership_value(record) - expect(record.errors[:mortgage]).to include(I18n.t("validations.sale_information.discounted_ownership_value", value_with_discount: "27000.00")) - expect(record.errors[:deposit]).to include(I18n.t("validations.sale_information.discounted_ownership_value", value_with_discount: "27000.00")) - expect(record.errors[:grant]).to include(I18n.t("validations.sale_information.discounted_ownership_value", value_with_discount: "27000.00")) - expect(record.errors[:value]).to include(I18n.t("validations.sale_information.discounted_ownership_value", value_with_discount: "27000.00")) - expect(record.errors[:discount]).to include(I18n.t("validations.sale_information.discounted_ownership_value", value_with_discount: "27000.00")) + + expected_message = ["Mortgage, deposit, and grant total must equal £27,000.00"] + + expect(record.errors[:mortgage]).to eq(expected_message) + expect(record.errors[:deposit]).to eq(expected_message) + expect(record.errors[:grant]).to eq(expected_message) + expect(record.errors[:value]).to eq(expected_message) + expect(record.errors[:discount]).to eq(expected_message) end it "does not add an error if mortgage and deposit total equals market value - discount" do @@ -301,11 +306,14 @@ RSpec.describe Validations::Sales::SaleInformationValidations do it "adds an error if mortgage and deposit total does not equal market value" do record.deposit = 2_000 sale_information_validator.validate_discounted_ownership_value(record) - expect(record.errors[:mortgage]).to include(I18n.t("validations.sale_information.discounted_ownership_value", value_with_discount: "30000.00")) - expect(record.errors[:deposit]).to include(I18n.t("validations.sale_information.discounted_ownership_value", value_with_discount: "30000.00")) - expect(record.errors[:grant]).to include(I18n.t("validations.sale_information.discounted_ownership_value", value_with_discount: "30000.00")) - expect(record.errors[:value]).to include(I18n.t("validations.sale_information.discounted_ownership_value", value_with_discount: "30000.00")) - expect(record.errors[:discount]).to include(I18n.t("validations.sale_information.discounted_ownership_value", value_with_discount: "30000.00")) + + expected_message = ["Mortgage, deposit, and grant total must equal £30,000.00"] + + expect(record.errors[:mortgage]).to eq(expected_message) + expect(record.errors[:deposit]).to eq(expected_message) + expect(record.errors[:grant]).to eq(expected_message) + expect(record.errors[:value]).to eq(expected_message) + expect(record.errors[:discount]).to eq(expected_message) end it "does not add an error if mortgage and deposit total equals market value" do @@ -334,11 +342,14 @@ RSpec.describe Validations::Sales::SaleInformationValidations do it "adds an error 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[:mortgage]).to include(I18n.t("validations.sale_information.discounted_ownership_value", value_with_discount: "18000.00")) - expect(record.errors[:deposit]).to include(I18n.t("validations.sale_information.discounted_ownership_value", value_with_discount: "18000.00")) - expect(record.errors[:grant]).to include(I18n.t("validations.sale_information.discounted_ownership_value", value_with_discount: "18000.00")) - expect(record.errors[:value]).to include(I18n.t("validations.sale_information.discounted_ownership_value", value_with_discount: "18000.00")) - expect(record.errors[:discount]).to include(I18n.t("validations.sale_information.discounted_ownership_value", value_with_discount: "18000.00")) + + expected_message = ["Mortgage, deposit, and grant total must equal £18,000.00"] + + expect(record.errors[:mortgage]).to eq(expected_message) + expect(record.errors[:deposit]).to eq(expected_message) + expect(record.errors[:grant]).to eq(expected_message) + expect(record.errors[:value]).to eq(expected_message) + expect(record.errors[:discount]).to eq(expected_message) end it "does not add an error if mortgage, grant and deposit total equals market value - discount" do @@ -354,11 +365,13 @@ RSpec.describe Validations::Sales::SaleInformationValidations do it "adds an error if grant and deposit total does not equal market value - discount" do sale_information_validator.validate_discounted_ownership_value(record) - expect(record.errors[:mortgage]).to include(I18n.t("validations.sale_information.discounted_ownership_value", value_with_discount: "18000.00")) - expect(record.errors[:deposit]).to include(I18n.t("validations.sale_information.discounted_ownership_value", value_with_discount: "18000.00")) - expect(record.errors[:grant]).to include(I18n.t("validations.sale_information.discounted_ownership_value", value_with_discount: "18000.00")) - expect(record.errors[:value]).to include(I18n.t("validations.sale_information.discounted_ownership_value", value_with_discount: "18000.00")) - expect(record.errors[:discount]).to include(I18n.t("validations.sale_information.discounted_ownership_value", value_with_discount: "18000.00")) + + expected_message = ["Mortgage, deposit, and grant total must equal £18,000.00"] + expect(record.errors[:mortgage]).to eq(expected_message) + expect(record.errors[:deposit]).to eq(expected_message) + expect(record.errors[:grant]).to eq(expected_message) + expect(record.errors[:value]).to eq(expected_message) + expect(record.errors[:discount]).to eq(expected_message) end it "does not add an error if mortgage, grant and deposit total equals market value - discount" do