Browse Source

Update duplicate logs check for 2023 lettings

pull/1750/head
Kat 3 years ago
parent
commit
cae6be707d
  1. 39
      app/services/bulk_upload/lettings/year2023/row_parser.rb
  2. 47
      spec/services/bulk_upload/lettings/year2023/row_parser_spec.rb

39
app/services/bulk_upload/lettings/year2023/row_parser.rb

@ -463,10 +463,11 @@ class BulkUpload::Lettings::Year2023::RowParser
"field_7", # startdate
"field_8", # startdate
"field_9", # startdate
"field_13", # tenancycode
"field_14", # propcode
"field_17", # location
"field_23", # postcode
"field_24", # postcode
field_4 != 1 ? "field_17" : nil, # location
field_4 != 2 ? "field_23" : nil, # postcode
field_4 != 2 ? "field_24" : nil, # postcode
"field_46", # age1
"field_47", # sex1
"field_50", # ecstat1
@ -553,17 +554,18 @@ private
end
def duplicate_check_fields
%w[
startdate
age1
sex1
ecstat1
owning_organisation
tcharge
propcode
postcode_full
location
]
[
"startdate",
"age1",
"sex1",
"ecstat1",
"owning_organisation",
"tcharge",
"propcode",
field_4 != 2 ? "postcode_full" : nil,
field_4 != 1 ? "location" : nil,
"tenancycode",
].compact
end
def validate_needs_type_present
@ -853,11 +855,12 @@ private
errors.add(:field_7, error_message) # startdate
errors.add(:field_8, error_message) # startdate
errors.add(:field_9, error_message) # startdate
errors.add(:field_13, error_message) # tenancycode
errors.add(:field_14, error_message) # propcode
errors.add(:field_17, error_message) # location
errors.add(:field_23, error_message) # postcode_full
errors.add(:field_24, error_message) # postcode_full
errors.add(:field_25, error_message) # la
errors.add(:field_17, error_message) unless field_4 == 1 # location
errors.add(:field_23, error_message) unless field_4 == 2 # postcode_full
errors.add(:field_24, error_message) unless field_4 == 2 # postcode_full
errors.add(:field_25, error_message) unless field_4 == 2 # la
errors.add(:field_46, error_message) # age1
errors.add(:field_47, error_message) # sex1
errors.add(:field_50, error_message) # ecstat1

47
spec/services/bulk_upload/lettings/year2023/row_parser_spec.rb

@ -263,7 +263,9 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do
expect(questions.map(&:id)).to eql([])
end
context "when the log already exists in the db" do
context "when a general needs log already exists in the db" do
let(:attributes) { { bulk_upload:, field_4: "1" } }
before do
parser.log.save!
parser.instance_variable_set(:@valid, nil)
@ -283,8 +285,8 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do
:field_7, # startdate
:field_8, # startdate
:field_9, # startdate
:field_13, # tenancycode
:field_14, # propcode
:field_17, # location
:field_23, # postcode_full
:field_24, # postcode_full
:field_25, # postcode_full
@ -295,6 +297,47 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do
].each do |field|
expect(parser.errors[field]).to include(error_message)
end
expect(parser.errors[:field_17]).not_to include(error_message)
end
end
context "when a supported housing log already exists in the db" do
let(:attributes) { { bulk_upload:, field_4: "2" } }
before do
parser.log.save!
parser.instance_variable_set(:@valid, nil)
end
it "is not a valid row" do
expect(parser).not_to be_valid
end
it "adds an error to all the fields used to determine duplicates" do
parser.valid?
error_message = "This is a duplicate log"
[
:field_1, # owning_organisation
:field_7, # startdate
:field_8, # startdate
:field_9, # startdate
:field_13, # tenancycode
:field_14, # propcode
:field_17, # location
:field_46, # age1
:field_47, # sex1
:field_50, # ecstat1
:field_132, # tcharge
].each do |field|
expect(parser.errors[field]).to include(error_message)
end
expect(parser.errors[:field_23]).not_to include(error_message)
expect(parser.errors[:field_24]).not_to include(error_message)
expect(parser.errors[:field_25]).not_to include(error_message)
end
end

Loading…
Cancel
Save