From 0a1c0de209e14cae9f72fddc627eb23873a41617 Mon Sep 17 00:00:00 2001 From: Kat Date: Tue, 12 Sep 2023 09:29:18 +0100 Subject: [PATCH] Make sure we don't repeat people details --- app/services/imports/lettings_logs_import_service.rb | 7 +++++-- .../imports/lettings_logs_import_service_spec.rb | 12 +++++++++--- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/app/services/imports/lettings_logs_import_service.rb b/app/services/imports/lettings_logs_import_service.rb index 26e2b7212..df3c2d533 100644 --- a/app/services/imports/lettings_logs_import_service.rb +++ b/app/services/imports/lettings_logs_import_service.rb @@ -76,15 +76,18 @@ module Imports attributes["irproduct_other"] = string_or_nil(xml_doc, "IRProductOther") attributes["rent_type"] = rent_type(xml_doc, attributes["lar"], attributes["irproduct"]) attributes["hhmemb"] = household_members(xml_doc, previous_status) + + people_indexes = people_with_details_ids(xml_doc) + available_people_indexes = people_indexes + (people_indexes.max + 1..8).to_a (1..8).each do |index| - person_index = people_with_details_ids(xml_doc)[index - 1] || index + person_index = available_people_indexes[index - 1] attributes["age#{index}"] = safe_string_as_integer(xml_doc, "P#{person_index}Age") attributes["age#{index}_known"] = age_known(xml_doc, index, person_index, attributes["hhmemb"]) attributes["sex#{index}"] = sex(xml_doc, person_index) attributes["ecstat#{index}"] = unsafe_string_as_integer(xml_doc, "P#{person_index}Eco") end (2..8).each do |index| - person_index = people_with_details_ids(xml_doc)[index - 1] || index + person_index = available_people_indexes[index - 1] attributes["relat#{index}"] = relat(xml_doc, person_index) attributes["details_known_#{index}"] = details_known(index, attributes) diff --git a/spec/services/imports/lettings_logs_import_service_spec.rb b/spec/services/imports/lettings_logs_import_service_spec.rb index c85d05866..8cd18f240 100644 --- a/spec/services/imports/lettings_logs_import_service_spec.rb +++ b/spec/services/imports/lettings_logs_import_service_spec.rb @@ -1286,7 +1286,7 @@ RSpec.describe Imports::LettingsLogsImportService do context "and there are several household members" do context "and one person details are skipped" do before do - lettings_log_xml.at_xpath("//xmlns:HHMEMB").content = 2 + lettings_log_xml.at_xpath("//xmlns:HHMEMB").content = 3 lettings_log_xml.at_xpath("//xmlns:P2AR").content = nil lettings_log_xml.at_xpath("//xmlns:P2Age").content = nil lettings_log_xml.at_xpath("//xmlns:P2Sex").content = nil @@ -1302,14 +1302,20 @@ RSpec.describe Imports::LettingsLogsImportService do lettings_log_service.send(:create_log, lettings_log_xml) lettings_log = LettingsLog.where(old_id: lettings_log_id).first - expect(lettings_log&.hhmemb).to eq(2) + expect(lettings_log&.hhmemb).to eq(3) expect(lettings_log&.details_known_2).to eq(0) expect(lettings_log&.age2_known).to eq(0) expect(lettings_log&.age2).to eq(7) expect(lettings_log&.sex2).to eq("M") expect(lettings_log&.relat2).to eq("C") - [3, 4, 5].each do |i| + expect(lettings_log&.details_known_3).to eq(0) + expect(lettings_log&.age3_known).to eq(0) + expect(lettings_log&.age3).to eq(nil) + expect(lettings_log&.sex3).to eq(nil) + expect(lettings_log&.relat3).to eq(nil) + + [4, 5].each do |i| expect(lettings_log&.send("details_known_#{i}")).to eq(nil) expect(lettings_log&.send("age#{i}_known")).to eq(nil) expect(lettings_log&.send("age#{i}")).to eq(nil)