diff --git a/app/services/exports/lettings_log_export_constants.rb b/app/services/exports/lettings_log_export_constants.rb index 3dc47736a..b0298e6ca 100644 --- a/app/services/exports/lettings_log_export_constants.rb +++ b/app/services/exports/lettings_log_export_constants.rb @@ -193,5 +193,10 @@ module Exports::LettingsLogExportConstants PRE_2024_EXPORT_FIELDS = Set[ "national", "offered" +] + + PRE_2025_EXPORT_FIELDS = Set[ + "carehome_charges_value_check", + "chcharge" ] end diff --git a/app/services/exports/lettings_log_export_service.rb b/app/services/exports/lettings_log_export_service.rb index cf3e984ae..c52bf8635 100644 --- a/app/services/exports/lettings_log_export_service.rb +++ b/app/services/exports/lettings_log_export_service.rb @@ -142,7 +142,8 @@ module Exports pattern_age.match(field_name) || !EXPORT_FIELDS.include?(field_name) || (lettings_log.form.start_year_2024_or_later? && PRE_2024_EXPORT_FIELDS.include?(field_name)) || - (!lettings_log.form.start_year_2024_or_later? && POST_2024_EXPORT_FIELDS.include?(field_name)) + (!lettings_log.form.start_year_2024_or_later? && POST_2024_EXPORT_FIELDS.include?(field_name)) || + (lettings_log.form.start_year_2025_or_later? && PRE_2025_EXPORT_FIELDS.include?(field_name)) end def build_export_xml(lettings_logs) diff --git a/spec/fixtures/exports/general_needs_log_25_26.xml b/spec/fixtures/exports/general_needs_log_25_26.xml new file mode 100644 index 000000000..57caaad28 --- /dev/null +++ b/spec/fixtures/exports/general_needs_log_25_26.xml @@ -0,0 +1,176 @@ + + +
+ 2 + BZ737 + 35 + F + 2 + 6 + 0 + 2 + 32 + M + 6 + + + + + + + + + + + + + + + + + + + 1 + 4 + 4 + 1 + 1 + 2 + 1 + 5 + 4 + A1 1AA + 6 + 7 + 3 + 1 + 268 + 1 + 1 + 2 + 2 + 7 + AA1 1AA + 1 + 0 + 1 + 0 + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + + + + 4 + 123 + E09000033 + E07000105 + 6 + 1 + 2022-05-05T10:36:49+01:00 + 0 + 2025-04-03T00:00:00+01:00 + 1 + 2 + 1 + 2021-11-03T00:00:00+00:00 + 2 + 1 + 7 + 0 + 0 + 2 + 0 + 2 + 200.0 + 50.0 + 40.0 + 35.0 + 325.0 + 12.0 + 0 + 1 + 0 + 100.0 + 25.0 + 20.0 + 17.5 + 162.5 + 6.0 + 0 + 1 + + 2 + P + + + + + + + + 2 + + 3 + + 4 + 2 + 1064 + 1 + 1 + 1 + 1 + 1, Test Street + + Test Town + + + 2 + + + + + 0 + 826 + address line 1 as entered + address line 2 as entered + town or city as entered + county as entered + AB1 2CD + la as entered + {id} + {owning_org_id} + {owning_org_name} + 1234 + {managing_org_id} + {managing_org_name} + 1234 + 2025-04-03T00:00:00+01:00 + 2025-04-03T00:00:00+01:00 + {log_id} + test1@example.com + test1@example.com + + 2 + 1 + +
diff --git a/spec/services/exports/lettings_log_export_service_spec.rb b/spec/services/exports/lettings_log_export_service_spec.rb index 12e3809f0..600590e71 100644 --- a/spec/services/exports/lettings_log_export_service_spec.rb +++ b/spec/services/exports/lettings_log_export_service_spec.rb @@ -448,6 +448,38 @@ RSpec.describe Exports::LettingsLogExportService do end end end + + context "with 25/26 collection period" do + let(:start_time) { Time.zone.local(2025, 4, 3) } + + before do + Timecop.freeze(start_time) + Singleton.__init__(FormHandler) + end + + after do + Timecop.unfreeze + Singleton.__init__(FormHandler) + end + + context "and one lettings log is available for export" do + let!(:lettings_log) { FactoryBot.create(:lettings_log, :completed, startdate: Time.zone.local(2025, 4, 3), assigned_to: user, age1: 35, sex1: "F", age2: 32, sex2: "M", ppostcode_full: "A1 1AA", nationality_all_group: 13, propcode: "123", postcode_full: "SE2 6RT", tenancycode: "BZ737", voiddate: Time.zone.local(2021, 11, 3), mrcdate: Time.zone.local(2022, 5, 5, 10, 36, 49), tenancylength: 5, underoccupation_benefitcap: 4, creation_method: 2, bulk_upload_id: 1, address_line1_as_entered: "address line 1 as entered", address_line2_as_entered: "address line 2 as entered", town_or_city_as_entered: "town or city as entered", county_as_entered: "county as entered", postcode_full_as_entered: "AB1 2CD", la_as_entered: "la as entered", manual_address_entry_selected: false, uprn: "1", uprn_known: 1) } + let(:expected_zip_filename) { "core_2025_2026_apr_mar_f0001_inc0001.zip" } + let(:expected_data_filename) { "core_2025_2026_apr_mar_f0001_inc0001_pt001.xml" } + let(:xml_export_file) { File.open("spec/fixtures/exports/general_needs_log_25_26.xml", "r:UTF-8") } + + 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) + 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 end context "when exporting a supported housing lettings logs in XML" do