Browse Source

Add tests and add validations

pull/2793/head
Manny Dinssa 7 months ago
parent
commit
9f18504ebc
  1. 7
      app/models/validations/sales/sale_information_validations.rb
  2. 4
      config/locales/validations/sales/sale_information.en.yml
  3. 50
      spec/models/validations/sales/sale_information_validations_spec.rb

7
app/models/validations/sales/sale_information_validations.rb

@ -361,7 +361,12 @@ module Validations::Sales::SaleInformationValidations
if record.firststair == 2 && record.numstair < 2
record.errors.add :numstair, I18n.t("validations.sales.sale_information.numstair.must_be_greater_than_one")
record.errors.add :firststair, I18n.t("validations.sales.sale_information.firststair.more_than_one_transaction")
record.errors.add :firststair, I18n.t("validations.sales.sale_information.firststair.cannot_be_no")
end
if record.firststair == 1 && record.numstair > 1
record.errors.add :numstair, I18n.t("validations.sales.sale_information.numstair.must_be_one")
record.errors.add :firststair, I18n.t("validations.sales.sale_information.firststair.cannot_be_yes")
end
end

4
config/locales/validations/sales/sale_information.en.yml

@ -127,5 +127,7 @@ en:
value_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."
numstair:
must_be_greater_than_one: "The number of staircasing transactions must be greater than 1 when this is not the first staircasing transaction."
must_be_one: "The number of staircasing transactions must be 1 when this is the first staircasing transaction."
firststair:
more_than_one_transaction: "The answer to 'Is this the first staircasing transaction?' cannot be 'yes' if the number of staircasing transactions is more than 1."
cannot_be_no: "The answer to 'Is this the first staircasing transaction?' cannot be 'no' if the number of staircasing transactions is 1."
cannot_be_yes: "The answer to 'Is this the first staircasing transaction?' cannot be 'yes' if the number of staircasing transactions is greater than 1."

50
spec/models/validations/sales/sale_information_validations_spec.rb

@ -1406,4 +1406,54 @@ RSpec.describe Validations::Sales::SaleInformationValidations do
end
end
end
describe "#validate_number_of_staircase_transactions" do
let(:record) { build(:sales_log, numstair:, firststair:) }
before do
sale_information_validator.validate_number_of_staircase_transactions(record)
end
context "when it is not the first staircasing transaction" do
context "and the number of staircasing transactions is between 2 and 10" do
let(:numstair) { 6 }
let(:firststair) { 2 }
it "does not add an error" do
expect(record.errors).to be_empty
end
end
context "and the number of staircasing transactions is less than 2" do
let(:numstair) { 1 }
let(:firststair) { 2 }
it "adds an error" do
expect(record.errors[:numstair]).to include(I18n.t("validations.sales.sale_information.numstair.must_be_greater_than_one"))
expect(record.errors[:firststair]).to include(I18n.t("validations.sales.sale_information.firststair.cannot_be_no"))
end
end
end
context "when it is the first staircasing transaction" do
context "and numstair is also 1" do
let(:numstair) { 1 }
let(:firststair) { 1 }
it "does not add an error" do
expect(record.errors).to be_empty
end
end
context "and numstair is greater than 1" do
let(:numstair) { 2 }
let(:firststair) { 1 }
it "adds an error" do
expect(record.errors[:numstair]).to include(I18n.t("validations.sales.sale_information.numstair.must_be_one"))
expect(record.errors[:firststair]).to include(I18n.t("validations.sales.sale_information.firststair.cannot_be_yes"))
end
end
end
end
end

Loading…
Cancel
Save