diff --git a/app/services/exports/lettings_log_export_constants.rb b/app/services/exports/lettings_log_export_constants.rb index edfb58b17..6186c60ae 100644 --- a/app/services/exports/lettings_log_export_constants.rb +++ b/app/services/exports/lettings_log_export_constants.rb @@ -136,7 +136,8 @@ module Exports::LettingsLogExportConstants "scheme_status", "location_status", "created_by", - "amended_by" + "amended_by", + "duplicate_log_reference_id" ] (1..8).each do |index| diff --git a/app/services/exports/lettings_log_export_service.rb b/app/services/exports/lettings_log_export_service.rb index 5cc7cac00..23a91bb5d 100644 --- a/app/services/exports/lettings_log_export_service.rb +++ b/app/services/exports/lettings_log_export_service.rb @@ -226,6 +226,7 @@ module Exports attribute_hash["relat#{index}"] = "R" attribute_hash["ecstat#{index}"] = 10 end + attribute_hash["duplicate_log_reference_id"] = lettings_log.duplicate_log_reference_id attribute_hash end diff --git a/spec/factories/duplicate_log_reference.rb b/spec/factories/duplicate_log_reference.rb new file mode 100644 index 000000000..955979790 --- /dev/null +++ b/spec/factories/duplicate_log_reference.rb @@ -0,0 +1,9 @@ +FactoryBot.define do + factory :duplicate_log_reference do + log_id { 1 } + log_type { "SalesLog" } + duplicate_log_reference_id { nil } + created_at { Time.zone.today } + updated_at { Time.zone.today } + end +end diff --git a/spec/fixtures/exports/general_needs_log.xml b/spec/fixtures/exports/general_needs_log.xml index fe7985668..8148af1d8 100644 --- a/spec/fixtures/exports/general_needs_log.xml +++ b/spec/fixtures/exports/general_needs_log.xml @@ -156,6 +156,7 @@ {log_id} test1@example.com + 1 diff --git a/spec/fixtures/exports/general_needs_log_23_24.xml b/spec/fixtures/exports/general_needs_log_23_24.xml index ab4871a94..c3477c037 100644 --- a/spec/fixtures/exports/general_needs_log_23_24.xml +++ b/spec/fixtures/exports/general_needs_log_23_24.xml @@ -157,6 +157,7 @@ {log_id} test1@example.com + 1 diff --git a/spec/fixtures/exports/supported_housing_logs.xml b/spec/fixtures/exports/supported_housing_logs.xml index c05f2c76a..f1a467758 100644 --- a/spec/fixtures/exports/supported_housing_logs.xml +++ b/spec/fixtures/exports/supported_housing_logs.xml @@ -172,6 +172,7 @@ 20 {location_id} active + 1 diff --git a/spec/services/exports/lettings_log_export_service_spec.rb b/spec/services/exports/lettings_log_export_service_spec.rb index 790995c9e..6162af3b2 100644 --- a/spec/services/exports/lettings_log_export_service_spec.rb +++ b/spec/services/exports/lettings_log_export_service_spec.rb @@ -413,6 +413,30 @@ RSpec.describe Exports::LettingsLogExportService do export_service.export_xml_lettings_logs end end + + context "and one lettings log with duplicate reference is available for export" do + let!(:lettings_log) { FactoryBot.create(:lettings_log, :completed, created_by: user, propcode: "123", ppostcode_full: "SE2 6RT", postcode_full: "NW1 5TY", tenancycode: "BZ737", startdate: Time.zone.local(2022, 2, 2, 10, 36, 49), voiddate: Time.zone.local(2019, 11, 3), mrcdate: Time.zone.local(2020, 5, 5, 10, 36, 49), tenancylength: 5, underoccupation_benefitcap: 4) } + + before do + FactoryBot.create(:duplicate_log_reference, log_type: "LettingsLog", log_id: lettings_log.id, duplicate_log_reference_id: 123) + end + + def replace_duplicate_log_reference_id(export_file) + export_file.sub!("", "123") + end + + it "generates an XML export file with the expected content within the ZIP file" do + expected_content = replace_entity_ids(lettings_log, xml_export_file.read) + expected_content = replace_duplicate_log_reference_id(expected_content) + expect(storage_service).to receive(:write_file).with(expected_zip_filename, any_args) do |_, content| + entry = Zip::File.open_buffer(content).find_entry(expected_data_filename) + expect(entry).not_to be_nil + expect(entry.get_input_stream.read).to eq(expected_content) + end + + export_service.export_xml_lettings_logs + end + end end context "when exporting a supported housing lettings logs in XML" do