Browse Source

Refactor tests

pull/2893/head
Rachael Booth 4 months ago
parent
commit
6e38bfa66c
  1. 55
      spec/models/validations/shared_validations_spec.rb

55
spec/models/validations/shared_validations_spec.rb

@ -116,7 +116,17 @@ RSpec.describe Validations::SharedValidations do
end end
describe "validating level of accuracy or rounding for numeric questions" do describe "validating level of accuracy or rounding for numeric questions" do
let(:sales_log) { build(:sales_log, :completed) }
before do
income_question = instance_double(Form::Question, step:, type: "numeric", id: "income1", check_answer_label: "Buyer 1’s gross annual income", page: instance_double(Form::Page, routed_to?: true))
form = instance_double(Form, numeric_questions: [income_question])
allow(FormHandler.instance).to receive(:get_form).and_return(form)
end
context "when validating a question with a step of 1" do context "when validating a question with a step of 1" do
let(:step) { 1 }
it "adds an error if input is a decimal" do it "adds an error if input is a decimal" do
sales_log.income1 = 30_000.5 sales_log.income1 = 30_000.5
shared_validator.validate_numeric_step(sales_log) shared_validator.validate_numeric_step(sales_log)
@ -131,34 +141,64 @@ RSpec.describe Validations::SharedValidations do
end end
context "when validating a question with a step of 10" do context "when validating a question with a step of 10" do
let(:step) { 10 }
it "adds an error if input is not a multiple of ten" do it "adds an error if input is not a multiple of ten" do
sales_log.savings = 30_005 sales_log.income1 = 30_005
sales_log.jointpur = 1
shared_validator.validate_numeric_step(sales_log) shared_validator.validate_numeric_step(sales_log)
expect(sales_log.errors[:savings]).to include I18n.t("validations.shared.numeric.nearest_ten", field: "Buyers’ total savings before any deposit paid") expect(sales_log.errors[:income1]).to include I18n.t("validations.shared.numeric.nearest_ten", field: "Buyer 1’s gross annual income")
end end
it "does not add an error if input is a multiple of ten" do it "does not add an error if input is a multiple of ten" do
sales_log.savings = 30_000 sales_log.income1 = 30_000
shared_validator.validate_numeric_step(sales_log) shared_validator.validate_numeric_step(sales_log)
expect(sales_log.errors).to be_empty expect(sales_log.errors).to be_empty
end end
end end
context "when validating a question with a step of 0.01" do context "when validating a question with a step of 0.01" do
let(:step) { 0.01 }
it "adds an error if input has more than 2 decimal places" do it "adds an error if input has more than 2 decimal places" do
sales_log.mscharge = 30.7418 sales_log.income1 = 30_123.7418
shared_validator.validate_numeric_step(sales_log) shared_validator.validate_numeric_step(sales_log)
expect(sales_log.errors[:mscharge]).to include I18n.t("validations.shared.numeric.nearest_hundredth", field: "Monthly leasehold charges") expect(sales_log.errors[:income1]).to include I18n.t("validations.shared.numeric.nearest_hundredth", field: "Buyer 1’s gross annual income")
end end
it "does not add an error if input has 2 or fewer decimal places" do it "does not add an error if input has 2 or fewer decimal places" do
sales_log.mscharge = 30.74 sales_log.income1 = 30_123.74
shared_validator.validate_numeric_step(sales_log) shared_validator.validate_numeric_step(sales_log)
expect(sales_log.errors).to be_empty expect(sales_log.errors).to be_empty
end end
end end
context "when validating a question with a step of 0.1" do
let(:step) { 0.1 }
it "adds an error if input has more than 1 decimal place" do
sales_log.income1 = 30_123.74
shared_validator.validate_numeric_step(sales_log)
expect(sales_log.errors[:income1]).to include I18n.t("validations.shared.numeric.nearest_tenth", field: "Buyer 1’s gross annual income")
end
it "does not add an error if input has 1 or fewer decimal places" do
sales_log.income1 = 30_123.8
shared_validator.validate_numeric_step(sales_log)
expect(sales_log.errors).to be_empty
end
end
context "when validating a question with an unusual step" do
let(:step) { 0.001 }
it "adds an appropriate error if input does not match" do
sales_log.income1 = 30_123.74
shared_validator.validate_numeric_step(sales_log)
expect(sales_log.errors[:income1]).to include I18n.t("validations.shared.numeric.nearest_step", field: "Buyer 1’s gross annual income", step: 0.001)
end
end
end
%i[sales_log lettings_log].each do |log_type| %i[sales_log lettings_log].each do |log_type|
describe "validate_owning_organisation_data_sharing_agremeent_signed" do describe "validate_owning_organisation_data_sharing_agremeent_signed" do
it "is valid if the Data Protection Confirmation is signed" do it "is valid if the Data Protection Confirmation is signed" do
@ -195,7 +235,6 @@ RSpec.describe Validations::SharedValidations do
end end
end end
end end
end
describe "validate numeric question input" do describe "validate numeric question input" do
it "does not allow letters" do it "does not allow letters" do

Loading…
Cancel
Save