Browse Source

Make sure we don't repeat people details

pull/1903/head
Kat 3 years ago
parent
commit
0a1c0de209
  1. 7
      app/services/imports/lettings_logs_import_service.rb
  2. 12
      spec/services/imports/lettings_logs_import_service_spec.rb

7
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)

12
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)

Loading…
Cancel
Save