Browse Source

CLDC-4174: add tests

pull/3200/head
Nat Dean-Lewis 3 weeks ago
parent
commit
5d814bb220
  1. 29
      spec/models/form/sales/pages/service_charge_changed_spec.rb
  2. 54
      spec/models/form/sales/questions/has_service_charges_changed_spec.rb
  3. 51
      spec/models/form/sales/questions/new_service_charges_spec.rb
  4. 92
      spec/models/validations/sales/financial_validations_spec.rb

29
spec/models/form/sales/pages/service_charge_changed_spec.rb

@ -0,0 +1,29 @@
require "rails_helper"
RSpec.describe Form::Sales::Pages::ServiceChargeChanged, type: :model do
subject(:page) { described_class.new(page_id, page_definition, subsection) }
let(:page_id) { nil }
let(:page_definition) { nil }
let(:subsection) { instance_double(Form::Subsection, form: instance_double(Form, start_date: Time.zone.local(2026, 4, 1))) }
it "has correct subsection" do
expect(page.subsection).to eq(subsection)
end
it "has correct questions" do
expect(page.questions.map(&:id)).to eq(%w[hasservicechargeschanged newservicecharges])
end
it "has the correct id" do
expect(page.id).to eq("service_charge_changed")
end
it "has the correct description" do
expect(page.description).to be_nil
end
it "has correct depends_on" do
expect(page.depends_on).to be_nil
end
end

54
spec/models/form/sales/questions/has_service_charges_changed_spec.rb

@ -0,0 +1,54 @@
require "rails_helper"
RSpec.describe Form::Sales::Questions::HasServiceChargesChanged, type: :model do
subject(:question) { described_class.new(question_id, question_definition, page) }
let(:question_id) { nil }
let(:question_definition) { nil }
let(:subsection) { instance_double(Form::Subsection, form: instance_double(Form, start_date:)) }
let(:page) { instance_double(Form::Page, subsection:) }
let(:start_date) { Time.utc(2026, 5, 1) }
it "has correct page" do
expect(question.page).to eq(page)
end
it "has the correct id" do
expect(question.id).to eq("hasservicechargeschanged")
end
it "has the correct type" do
expect(question.type).to eq("radio")
end
it "is not marked as derived" do
expect(question.derived?(nil)).to be false
end
it "has the correct answer_options" do
expect(question.answer_options).to eq({
"1" => { "value" => "Yes" },
"2" => { "value" => "No" },
})
end
it "has correct conditional for" do
expect(question.conditional_for).to eq({
"newservicecharges" => [1],
})
end
it "has correct hidden_in_check_answers for" do
expect(question.hidden_in_check_answers).to eq({
"depends_on" => [
{
"hasservicechargeschanged" => 1,
},
],
})
end
it "has the correct question number" do
expect(question.question_number).to eq(0)
end
end

51
spec/models/form/sales/questions/new_service_charges_spec.rb

@ -0,0 +1,51 @@
require "rails_helper"
RSpec.describe Form::Sales::Questions::NewServiceCharges, type: :model do
subject(:question) { described_class.new(question_id, question_definition, page) }
let(:question_id) { nil }
let(:question_definition) { nil }
let(:subsection) { instance_double(Form::Subsection, form: instance_double(Form, start_date:)) }
let(:page) { instance_double(Form::Page, subsection:) }
let(:start_date) { Time.utc(2026, 5, 1) }
it "has correct page" do
expect(question.page).to eq(page)
end
it "has the correct id" do
expect(question.id).to eq("newservicecharges")
end
it "has the correct type" do
expect(question.type).to eq("numeric")
end
it "is not marked as derived" do
expect(question.derived?(nil)).to be false
end
it "has the correct width" do
expect(question.width).to be 5
end
it "has the correct min" do
expect(question.min).to be 0
end
it "has the correct max" do
expect(question.max).to be 9999.99
end
it "has the correct step" do
expect(question.step).to be 0.01
end
it "has the correct prefix" do
expect(question.prefix).to eq("£")
end
it "has the correct question number" do
expect(question.question_number).to eq(0)
end
end

92
spec/models/validations/sales/financial_validations_spec.rb

@ -478,4 +478,96 @@ RSpec.describe Validations::Sales::FinancialValidations do
expect(record.errors).to be_empty expect(record.errors).to be_empty
end end
end end
describe "#validate_newservicecharges" do
let(:record) { FactoryBot.build(:sales_log, ownershipsch: 1, staircase: 1) }
it "does not add errors when newservicecharges is nil" do
record.newservicecharges = nil
financial_validator.validate_newservicecharges(record)
expect(record.errors).to be_empty
end
it "does not add errors when newservicecharges is valid" do
record.newservicecharges = 100.50
financial_validator.validate_newservicecharges(record)
expect(record.errors).to be_empty
end
it "adds an error when newservicecharges is negative" do
record.newservicecharges = -50
financial_validator.validate_newservicecharges(record)
expect(record.errors["newservicecharges"]).to include(match I18n.t("validations.sales.financial.newservicecharges.negative"))
end
it "adds an error when newservicecharges is over the maximum" do
record.newservicecharges = 10_000
financial_validator.validate_newservicecharges(record)
expect(record.errors["newservicecharges"]).to include(match I18n.t("validations.sales.financial.newservicecharges.over_max"))
end
it "does not add errors when newservicecharges is exactly the maximum" do
record.newservicecharges = 9999.99
financial_validator.validate_newservicecharges(record)
expect(record.errors).to be_empty
end
it "does not add errors when newservicecharges is zero" do
record.newservicecharges = 0
financial_validator.validate_newservicecharges(record)
expect(record.errors).to be_empty
end
end
describe "#validate_newservicecharges_different_from_mscharge" do
let(:record) { FactoryBot.build(:sales_log, ownershipsch: 1, staircase: 1) }
it "does not add errors when hasservicechargeschanged is nil" do
record.hasservicechargeschanged = nil
record.newservicecharges = 100
record.mscharge = 100
financial_validator.validate_newservicecharges_different_from_mscharge(record)
expect(record.errors).to be_empty
end
it "does not add errors when hasservicechargeschanged is 2 (No)" do
record.hasservicechargeschanged = 2
record.newservicecharges = 100
record.mscharge = 100
financial_validator.validate_newservicecharges_different_from_mscharge(record)
expect(record.errors).to be_empty
end
it "does not add errors when newservicecharges is nil" do
record.hasservicechargeschanged = 1
record.newservicecharges = nil
record.mscharge = 100
financial_validator.validate_newservicecharges_different_from_mscharge(record)
expect(record.errors).to be_empty
end
it "does not add errors when mscharge is nil" do
record.hasservicechargeschanged = 1
record.newservicecharges = 100
record.mscharge = nil
financial_validator.validate_newservicecharges_different_from_mscharge(record)
expect(record.errors).to be_empty
end
it "does not add errors when newservicecharges is different from mscharge" do
record.hasservicechargeschanged = 1
record.newservicecharges = 150
record.mscharge = 100
financial_validator.validate_newservicecharges_different_from_mscharge(record)
expect(record.errors).to be_empty
end
it "adds an error when hasservicechargeschanged is 1 (Yes) and newservicecharges equals mscharge" do
record.hasservicechargeschanged = 1
record.newservicecharges = 100
record.mscharge = 100
financial_validator.validate_newservicecharges_different_from_mscharge(record)
expect(record.errors["newservicecharges"]).to include(match I18n.t("validations.sales.financial.newservicecharges.same_as_previous"))
end
end
end end

Loading…
Cancel
Save