|
|
|
|
@ -1021,4 +1021,74 @@ RSpec.describe Imports::LettingsLogsFieldImportService do
|
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
context "when updating person_details" do |
|
|
|
|
let(:field) { "person_details" } |
|
|
|
|
let(:lettings_log) { LettingsLog.find_by(old_id: lettings_log_id) } |
|
|
|
|
|
|
|
|
|
before do |
|
|
|
|
Imports::LettingsLogsImportService.new(storage_service, logger).create_logs(fixture_directory) |
|
|
|
|
lettings_log_file.rewind |
|
|
|
|
lettings_log.update!(values_updated_at: nil) |
|
|
|
|
lettings_log_xml.at_xpath("//xmlns:P4Age").content = 7 |
|
|
|
|
lettings_log_xml.at_xpath("//xmlns:P4Sex").content = "Male" |
|
|
|
|
lettings_log_xml.at_xpath("//xmlns:P4Rel").content = "Child" |
|
|
|
|
lettings_log_xml.at_xpath("//xmlns:P4Eco").content = "9) Child under 16" |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
context "when the lettings log has no details for person 2" do |
|
|
|
|
before do |
|
|
|
|
lettings_log.update(details_known_2: 0, age2_known: nil, age2: nil, sex2: nil, ecstat2: nil, relat2: nil, hhmemb: 3, |
|
|
|
|
details_known_3: 0, age3_known: 0, age3: 19, sex3: "F", ecstat3: 10, relat3: "X") |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
it "moves the details of person 3 to person 2 and imports missing person 3 values" do |
|
|
|
|
expect(logger).to receive(:info).with(/lettings log \d+'s person 3 details moved to person 2 details/) |
|
|
|
|
expect(logger).to receive(:info).with(/lettings log \d+, reimported person 3 details/) |
|
|
|
|
import_service.send(:update_person_details, lettings_log_xml) |
|
|
|
|
lettings_log.reload |
|
|
|
|
expect(lettings_log.age2_known).to eq(0) |
|
|
|
|
expect(lettings_log.age2).to eq(19) |
|
|
|
|
expect(lettings_log.sex2).to eq("F") |
|
|
|
|
expect(lettings_log.ecstat2).to eq(10) |
|
|
|
|
expect(lettings_log.relat2).to eq("X") |
|
|
|
|
expect(lettings_log.age3_known).to eq(0) |
|
|
|
|
expect(lettings_log.age3).to eq(7) |
|
|
|
|
expect(lettings_log.sex3).to eq("M") |
|
|
|
|
expect(lettings_log.ecstat3).to eq(9) |
|
|
|
|
expect(lettings_log.relat3).to eq("C") |
|
|
|
|
expect(lettings_log.values_updated_at).not_to be_nil |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
context "when the lettings log has details for person 2" do |
|
|
|
|
let(:lettings_log) { LettingsLog.find_by(old_id: lettings_log_id) } |
|
|
|
|
|
|
|
|
|
before do |
|
|
|
|
lettings_log.update(details_known_2: 0, age2: 22) |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
it "does not update the lettings_log person details" do |
|
|
|
|
expect(logger).to receive(:info).with(/lettings log \d+ has details for person 2, skipping update/) |
|
|
|
|
import_service.send(:update_person_details, lettings_log_xml) |
|
|
|
|
lettings_log.reload |
|
|
|
|
expect(lettings_log.values_updated_at).to be_nil |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
context "when the person 2 details are not known" do |
|
|
|
|
let(:lettings_log) { LettingsLog.find_by(old_id: lettings_log_id) } |
|
|
|
|
|
|
|
|
|
before do |
|
|
|
|
lettings_log.update(details_known_2: 1) |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
it "does not update the lettings_log person details" do |
|
|
|
|
expect(logger).to receive(:info).with(/lettings log \d+ person 2 details are not known, skipping update/) |
|
|
|
|
import_service.send(:update_person_details, lettings_log_xml) |
|
|
|
|
lettings_log.reload |
|
|
|
|
expect(lettings_log.values_updated_at).to be_nil |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
|