From 0a55e17533deffcd949d154b4b74afa1a60a0ffe Mon Sep 17 00:00:00 2001 From: Samuel Young Date: Mon, 5 Jan 2026 16:07:39 +0000 Subject: [PATCH] CLDC-4136: Hide question from CDS export --- .../exports/lettings_log_export_constants.rb | 4 + .../exports/lettings_log_export_service.rb | 3 +- .../exports/general_needs_log_26_27.xml | 175 ++++++++++++++++++ .../lettings_log_export_service_spec.rb | 36 +++- 4 files changed, 215 insertions(+), 3 deletions(-) create mode 100644 spec/fixtures/exports/general_needs_log_26_27.xml diff --git a/app/services/exports/lettings_log_export_constants.rb b/app/services/exports/lettings_log_export_constants.rb index b0298e6ca..1698fb0a1 100644 --- a/app/services/exports/lettings_log_export_constants.rb +++ b/app/services/exports/lettings_log_export_constants.rb @@ -199,4 +199,8 @@ module Exports::LettingsLogExportConstants "carehome_charges_value_check", "chcharge" ] + + PRE_2026_EXPORT_FIELDS = Set[ + "builtype" + ] end diff --git a/app/services/exports/lettings_log_export_service.rb b/app/services/exports/lettings_log_export_service.rb index 89b041104..5e67b4854 100644 --- a/app/services/exports/lettings_log_export_service.rb +++ b/app/services/exports/lettings_log_export_service.rb @@ -170,7 +170,8 @@ module Exports !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_2025_or_later? && PRE_2025_EXPORT_FIELDS.include?(field_name)) + (lettings_log.form.start_year_2025_or_later? && PRE_2025_EXPORT_FIELDS.include?(field_name)) || + (lettings_log.form.start_year_2026_or_later? && PRE_2026_EXPORT_FIELDS.include?(field_name)) end def build_export_xml(lettings_logs) diff --git a/spec/fixtures/exports/general_needs_log_26_27.xml b/spec/fixtures/exports/general_needs_log_26_27.xml new file mode 100644 index 000000000..cc42c8f9b --- /dev/null +++ b/spec/fixtures/exports/general_needs_log_26_27.xml @@ -0,0 +1,175 @@ + + +
+ 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 + 2026-04-03T00:00:00+01:00 + 1 + 2 + 2021-11-03T00:00:00+00:00 + 2 + 1 + 7 + 0 + 0 + 2 + + 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 + 1429 + 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 + 2026-04-03T00:00:00+01:00 + 2026-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 02c7f4a2b..613d64dd0 100644 --- a/spec/services/exports/lettings_log_export_service_spec.rb +++ b/spec/services/exports/lettings_log_export_service_spec.rb @@ -419,7 +419,7 @@ RSpec.describe Exports::LettingsLogExportService do end end - context "with 24/25 collection period" do + context "with 24/25 collection period", metadata: { year: 24 } do let(:start_time) { Time.zone.local(2024, 4, 3) } before do @@ -451,7 +451,7 @@ RSpec.describe Exports::LettingsLogExportService do end end - context "with 25/26 collection period" do + context "with 25/26 collection period", metadata: { year: 25 } do let(:start_time) { Time.zone.local(2025, 4, 3) } before do @@ -483,6 +483,38 @@ RSpec.describe Exports::LettingsLogExportService do end end + context "with 26/27 collection period", metadata: { year: 26 } do + let(:start_time) { Time.zone.local(2026, 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(2026, 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_2026_2027_apr_mar_f0001_inc0001.zip" } + let(:expected_data_filename) { "core_2026_2027_apr_mar_f0001_inc0001_pt001.xml" } + let(:xml_export_file) { File.open("spec/fixtures/exports/general_needs_log_26_27.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 have_same_xml_contents_as(expected_content) + end + + export_service.export_xml_lettings_logs + end + end + end + context "and one lettings log has not been updated in the time range" do let(:expected_zip_filename) { "core_#{current_collection_start_year}_#{current_collection_end_year}_apr_mar_f0001_inc0001.zip" } let(:start_time) { current_collection_start_date }