Browse Source

Merge branch 'main' into CLDC-1461-add-validation-ensure-postcodes-match

pull/1200/head
Arthur Campbell 3 years ago committed by GitHub
parent
commit
1bf05b89b8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 6
      app/models/form/sales/pages/handover_date.rb
  2. 1
      app/models/form/sales/questions/deposit_amount.rb
  3. 1
      app/models/organisation.rb
  4. 3
      app/models/sales_log.rb
  5. 9
      app/models/validations/sales/sale_information_validations.rb
  6. 8
      db/seeds.rb
  7. 4
      spec/models/form/sales/pages/handover_date_spec.rb
  8. 4
      spec/models/form/sales/questions/deposit_amount_spec.rb
  9. 16
      spec/models/validations/sales/household_validations_spec.rb
  10. 49
      spec/models/validations/sales/sale_information_validations_spec.rb
  11. 2
      spec/requests/form_controller_spec.rb

6
app/models/form/sales/pages/handover_date.rb

@ -2,9 +2,9 @@ class Form::Sales::Pages::HandoverDate < ::Form::Page
def initialize(id, hsh, subsection) def initialize(id, hsh, subsection)
super super
@id = "handover_date" @id = "handover_date"
@depends_on = [{ @depends_on = [
"ownershipsch" => 1, { "ownershipsch" => 1, "resale" => 2 },
}] ]
end end
def questions def questions

1
app/models/form/sales/questions/deposit_amount.rb

@ -7,6 +7,7 @@ class Form::Sales::Questions::DepositAmount < ::Form::Question
@type = "numeric" @type = "numeric"
@min = 0 @min = 0
@width = 5 @width = 5
@max = 9_999_999
@prefix = "£" @prefix = "£"
@hint_text = "Enter the total cash sum paid by the buyer towards the property that was not funded by the mortgage" @hint_text = "Enter the total cash sum paid by the buyer towards the property that was not funded by the mortgage"
@derived = true @derived = true

1
app/models/organisation.rb

@ -7,7 +7,6 @@ class Organisation < ApplicationRecord
has_many :data_protection_confirmations has_many :data_protection_confirmations
has_many :organisation_rent_periods has_many :organisation_rent_periods
has_many :owned_schemes, class_name: "Scheme", foreign_key: "owning_organisation_id", dependent: :delete_all has_many :owned_schemes, class_name: "Scheme", foreign_key: "owning_organisation_id", dependent: :delete_all
has_many :managed_schemes, class_name: "Scheme", foreign_key: "managing_organisation_id"
has_many :parent_organisation_relationships, foreign_key: :child_organisation_id, class_name: "OrganisationRelationship" has_many :parent_organisation_relationships, foreign_key: :child_organisation_id, class_name: "OrganisationRelationship"
has_many :parent_organisations, through: :parent_organisation_relationships has_many :parent_organisations, through: :parent_organisation_relationships
has_many :child_organisation_relationships, foreign_key: :parent_organisation_id, class_name: "OrganisationRelationship" has_many :child_organisation_relationships, foreign_key: :parent_organisation_id, class_name: "OrganisationRelationship"

3
app/models/sales_log.rb

@ -3,6 +3,9 @@ class SalesLogValidator < ActiveModel::Validator
include Validations::Sales::PropertyValidations include Validations::Sales::PropertyValidations
include Validations::SharedValidations include Validations::SharedValidations
include Validations::Sales::FinancialValidations include Validations::Sales::FinancialValidations
include Validations::Sales::SaleInformationValidations
include Validations::SharedValidations
include Validations::LocalAuthorityValidations include Validations::LocalAuthorityValidations
def validate(record) def validate(record)

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

@ -0,0 +1,9 @@
module Validations::Sales::SaleInformationValidations
def validate_deposit_range(record)
return if record.deposit.blank?
unless record.deposit >= 0 && record.deposit <= 999_999
record.errors.add :deposit, "Cash deposit must be £0 - £999,999"
end
end
end

8
db/seeds.rb

@ -110,8 +110,8 @@ unless Rails.env.test?
) )
User.find_or_create_by!( User.find_or_create_by!(
name: "Provider Owns Stock", name: "Provider No Stock",
email: "provider.nostock1@example.com", email: "provider.nostock@example.com",
organisation: standalone_no_stock, organisation: standalone_no_stock,
role: "data_provider", role: "data_provider",
) do |user| ) do |user|
@ -120,8 +120,8 @@ unless Rails.env.test?
end end
User.find_or_create_by!( User.find_or_create_by!(
name: "Coordinator Owns Stock", name: "Coordinator No Stock",
email: "coordinator.nostock1@example.com", email: "coordinator.nostock@example.com",
organisation: standalone_no_stock, organisation: standalone_no_stock,
role: "data_coordinator", role: "data_coordinator",
) do |user| ) do |user|

4
spec/models/form/sales/pages/handover_date_spec.rb

@ -28,8 +28,6 @@ RSpec.describe Form::Sales::Pages::HandoverDate, type: :model do
end end
it "has the correct depends_on" do it "has the correct depends_on" do
expect(page.depends_on).to eq([{ expect(page.depends_on).to eq([{ "ownershipsch" => 1, "resale" => 2 }])
"ownershipsch" => 1,
}])
end end
end end

4
spec/models/form/sales/questions/deposit_amount_spec.rb

@ -46,4 +46,8 @@ RSpec.describe Form::Sales::Questions::DepositAmount, type: :model do
it "has correct min" do it "has correct min" do
expect(question.min).to eq(0) expect(question.min).to eq(0)
end end
it "has correct max" do
expect(question.max).to eq(9_999_999)
end
end end

16
spec/models/validations/sales/household_validations_spec.rb

@ -7,42 +7,42 @@ RSpec.describe Validations::Sales::HouseholdValidations do
describe "#validate_number_of_other_people_living_in_the_property" do describe "#validate_number_of_other_people_living_in_the_property" do
context "when within permitted bounds" do context "when within permitted bounds" do
let(:record) { FactoryBot.build(:sales_log, hholdcount: 2) } let(:record) { build(:sales_log, hholdcount: 2) }
it "does not add an error" do it "does not add an error" do
household_validator.validate_number_of_other_people_living_in_the_property(record) household_validator.validate_number_of_other_people_living_in_the_property(record)
expect(record.errors).not_to be_present expect(record.errors[:hholdcount]).not_to be_present
end end
end end
context "when blank" do context "when blank" do
let(:record) { FactoryBot.build(:sales_log, hholdcount: nil) } let(:record) { build(:sales_log, hholdcount: nil) }
it "does not add an error" do it "does not add an error" do
household_validator.validate_number_of_other_people_living_in_the_property(record) household_validator.validate_number_of_other_people_living_in_the_property(record)
expect(record.errors).not_to be_present expect(record.errors[:hholdcount]).not_to be_present
end end
end end
context "when below lower bound" do context "when below lower bound" do
let(:record) { FactoryBot.build(:sales_log, hholdcount: -1) } let(:record) { build(:sales_log, hholdcount: -1) }
it "adds an error" do it "adds an error" do
household_validator.validate_number_of_other_people_living_in_the_property(record) household_validator.validate_number_of_other_people_living_in_the_property(record)
expect(record.errors).to be_present expect(record.errors[:hholdcount]).to be_present
end end
end end
context "when higher than upper bound" do context "when higher than upper bound" do
let(:record) { FactoryBot.build(:sales_log, hholdcount: 5) } let(:record) { build(:sales_log, hholdcount: 5) }
it "adds an error" do it "adds an error" do
household_validator.validate_number_of_other_people_living_in_the_property(record) household_validator.validate_number_of_other_people_living_in_the_property(record)
expect(record.errors).to be_present expect(record.errors[:hholdcount]).to be_present
end end
end end
end end

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

@ -0,0 +1,49 @@
require "rails_helper"
RSpec.describe Validations::Sales::SaleInformationValidations do
subject(:sale_information_validator) { validator_class.new }
let(:validator_class) { Class.new { include Validations::Sales::SaleInformationValidations } }
describe "#validate_deposit_range" do
context "when within permitted bounds" do
let(:record) { build(:sales_log, deposit: 0) }
it "does not add an error" do
sale_information_validator.validate_deposit_range(record)
expect(record.errors[:deposit]).not_to be_present
end
end
context "when blank" do
let(:record) { build(:sales_log, deposit: nil) }
it "does not add an error" do
sale_information_validator.validate_deposit_range(record)
expect(record.errors[:deposit]).not_to be_present
end
end
context "when below lower bound" do
let(:record) { build(:sales_log, deposit: -1) }
it "adds an error" do
sale_information_validator.validate_deposit_range(record)
expect(record.errors[:deposit]).to be_present
end
end
context "when higher than upper bound" do
let(:record) { build(:sales_log, deposit: 1_000_000) }
it "adds an error" do
sale_information_validator.validate_deposit_range(record)
expect(record.errors[:deposit]).to be_present
end
end
end
end

2
spec/requests/form_controller_spec.rb

@ -658,7 +658,7 @@ RSpec.describe FormController, type: :request do
let(:referrer) { "/lettings-logs/#{completed_lettings_log.id}/net-income-value-check?referrer=check_answers" } let(:referrer) { "/lettings-logs/#{completed_lettings_log.id}/net-income-value-check?referrer=check_answers" }
before do before do
completed_lettings_log.update!(ecstat1: 1, earnings: 130, hhmemb: 1) # we're not routing to that page, so it gets cleared?§ completed_lettings_log.update!(ecstat1: 1, earnings: 130, hhmemb: 1) # we're not routing to that page, so it gets cleared?
allow(completed_lettings_log).to receive(:net_income_soft_validation_triggered?).and_return(true) allow(completed_lettings_log).to receive(:net_income_soft_validation_triggered?).and_return(true)
allow(completed_lettings_log.form).to receive(:end_date).and_return(Time.zone.today + 1.day) allow(completed_lettings_log.form).to receive(:end_date).and_return(Time.zone.today + 1.day)
post "/lettings-logs/#{completed_lettings_log.id}/form", params: interrupt_params, headers: headers.merge({ "HTTP_REFERER" => referrer }) post "/lettings-logs/#{completed_lettings_log.id}/form", params: interrupt_params, headers: headers.merge({ "HTTP_REFERER" => referrer })

Loading…
Cancel
Save