Browse Source

Update duplicate_logs scope to check for nulls

pull/1762/head
Kat 3 years ago
parent
commit
7b08ae23d5
  1. 5
      app/models/lettings_log.rb
  2. 12
      spec/models/lettings_log_spec.rb

5
app/models/lettings_log.rb

@ -55,7 +55,10 @@ class LettingsLog < Log
scope :filter_by_organisation, ->(org, _user = nil) { where(owning_organisation: org).or(where(managing_organisation: org)) } scope :filter_by_organisation, ->(org, _user = nil) { where(owning_organisation: org).or(where(managing_organisation: org)) }
scope :duplicate_logs, lambda { |log| scope :duplicate_logs, lambda { |log|
attrs_to_check = %w[tenancycode propcode startdate age1 sex1 ecstat1 tcharge postcode_full] attrs_to_check = %w[tenancycode propcode startdate age1 sex1 ecstat1 tcharge postcode_full]
where(log.slice(*attrs_to_check)).where.not(id: log.id).where.not(status: "deleted") where(log.slice(*attrs_to_check))
.where.not(id: log.id)
.where.not(status: "deleted")
.where.not("age1 IS NULL OR sex1 IS NULL OR ecstat1 IS NULL OR tcharge IS NULL OR postcode_full IS NULL OR propcode IS NULL")
} }
scope :duplicate_logs_for_organisation, ->(org, log) { filter_by_organisation(org).duplicate_logs(log) } scope :duplicate_logs_for_organisation, ->(org, log) { filter_by_organisation(org).duplicate_logs(log) }

12
spec/models/lettings_log_spec.rb

@ -2810,6 +2810,8 @@ RSpec.describe LettingsLog do
let!(:different_propcode) { create(:lettings_log, :duplicate_general_needs, propcode: "different") } let!(:different_propcode) { create(:lettings_log, :duplicate_general_needs, propcode: "different") }
let!(:different_tenancycode) { create(:lettings_log, :duplicate_general_needs, tenancycode: "different") } let!(:different_tenancycode) { create(:lettings_log, :duplicate_general_needs, tenancycode: "different") }
let!(:different_postcode_full) { create(:lettings_log, :duplicate_general_needs, postcode_full: "B1 1AA") } let!(:different_postcode_full) { create(:lettings_log, :duplicate_general_needs, postcode_full: "B1 1AA") }
let!(:duplicate_check_fields_not_given) { create(:lettings_log, :duplicate_general_needs, age1: nil, sex1: nil, ecstat1: nil, propcode: nil, postcode_known: 2, postcode_full: nil) }
let!(:tenancycode_not_given) { create(:lettings_log, :duplicate_general_needs, tenancycode: nil) }
before do before do
create(:lettings_log, :in_progress) create(:lettings_log, :in_progress)
@ -2862,6 +2864,16 @@ RSpec.describe LettingsLog do
it "does not return a log with a different postcode_full" do it "does not return a log with a different postcode_full" do
expect(described_class.duplicate_logs(log)).not_to include(different_postcode_full) expect(described_class.duplicate_logs(log)).not_to include(different_postcode_full)
end end
it "does not return a log with nil values" do
log.update!(age1: nil, sex1: nil, ecstat1: nil, propcode: nil, postcode_known: 2, postcode_full: nil)
expect(described_class.duplicate_logs(log)).not_to include(duplicate_check_fields_not_given)
end
it "does return the log if tenancy code is nil" do
log.update!(tenancycode: nil)
expect(described_class.duplicate_logs(log)).to include(tenancycode_not_given)
end
end end
end end

Loading…
Cancel
Save