From 10429522d8295c944f8adee1a8e2a4596ff1a2bd Mon Sep 17 00:00:00 2001 From: Nat Dean-Lewis Date: Thu, 5 Mar 2026 15:26:42 +0000 Subject: [PATCH] CLDC-4175: export test updates --- .../exports/sales_log_export_service_spec.rb | 101 +++++++++++++++--- 1 file changed, 86 insertions(+), 15 deletions(-) diff --git a/spec/services/exports/sales_log_export_service_spec.rb b/spec/services/exports/sales_log_export_service_spec.rb index 25709fdb8..66ed11534 100644 --- a/spec/services/exports/sales_log_export_service_spec.rb +++ b/spec/services/exports/sales_log_export_service_spec.rb @@ -451,18 +451,12 @@ RSpec.describe Exports::SalesLogExportService do end context "with shared ownership and mscharge" do - let!(:sales_log) { FactoryBot.create(:sales_log, :export, ownershipsch: 1, staircase: 2, type: 30, mscharge: 321, has_management_fee: 1, management_fee: 222) } - - def replace_mscharge_and_shared_ownership_values(export_file) + def replace_shared_ownership_values(export_file) export_file.sub!("", "1") export_file.sub!("", "321.0") - export_file.sub!("", "1") - export_file.sub!("", "222.0") export_file.sub!("100.0", "") export_file.sub!("1", "") - export_file.sub!("8", "30") - export_file.sub!("", "2") export_file.sub!("10000.0", "") export_file.sub!("0", "1") export_file.sub!("SW1A", "") @@ -474,16 +468,93 @@ RSpec.describe Exports::SalesLogExportService do export_file.sub!("Westminster", "") end - it "exports mscharge fields as hasmscharge and mscharge" do - expected_content = replace_entity_ids(sales_log, xml_export_file.read) - expected_content = replace_mscharge_and_shared_ownership_values(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 have_same_xml_contents_as(expected_content) + context "when not staircasing" do + let!(:sales_log) { FactoryBot.create(:sales_log, :export, ownershipsch: 1, staircase: 2, type: 30, mscharge: 321, has_management_fee: 1, management_fee: 222) } + + def replace_non_staircasing_values(export_file) + export_file.sub!("", "1") + export_file.sub!("", "222.0") + export_file.sub!("8", "30") + export_file.sub!("", "2") end - export_service.export_xml_sales_logs + it "exports mscharge fields as hasmscharge and mscharge" do + expected_content = replace_entity_ids(sales_log, xml_export_file.read) + replace_shared_ownership_values(expected_content) + replace_non_staircasing_values(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 have_same_xml_contents_as(expected_content) + end + + export_service.export_xml_sales_logs + end + end + + context "when staircasing" do + context "when exporting only 26/27 collection period", metadata: { year: 26 } do + let(:start_time) { collection_start_date_for_year(2026) } + let(:expected_zip_filename) { "core_sales_2026_2027_apr_mar_f0001_inc0001.zip" } + let(:expected_data_filename) { "core_sales_2026_2027_apr_mar_f0001_inc0001_pt001.xml" } + let(:xml_export_file) { File.open("spec/fixtures/exports/sales_log_26_27.xml", "r:UTF-8") } + let!(:sales_log) { FactoryBot.create(:sales_log, :export, ownershipsch: 1, staircase: 1, type: 2, mscharge: 321, has_management_fee: 1, management_fee: 222, hasservicechargeschanged: 1, newservicecharges: 150) } + + def replace_staircasing_values(export_file) + export_file.sub!("", "1") + export_file.sub!("", "222.0") + export_file.sub!("8", "2") + export_file.sub!("", "1") + export_file.sub!("5", "") + export_file.sub!("1", "") + export_file.sub!("3", "") + export_file.sub!("80000.0", "") + export_file.sub!("1", "") + export_file.sub!("1", "") + export_file.sub!("1", "") + export_file.sub!("222.0", "") + export_file.sub!("17", "") + export_file.sub!("17", "") + export_file.sub!("17", "") + export_file.sub!("1", "") + export_file.sub!("4", "") + export_file.sub!("4", "") + export_file.sub!("7", "") + export_file.sub!("1", "") + export_file.sub!("0", "") + export_file.sub!("1", "") + export_file.sub!("0", "") + export_file.sub!("10000", "") + export_file.sub!("10000", "") + export_file.sub!("1", "") + export_file.sub!("1", "") + export_file.sub!("20000.0", "") + export_file.sub!("10", "") + export_file.sub!("826", "") + export_file.sub!("826", "") + export_file.sub!("1", "") + export_file.sub!("2", "") + export_file.sub!("1", "") + export_file.sub!("1", "") + export_file.sub!("1", "") + export_file.sub!("1", "") + export_file.sub!("", "1") + export_file.sub!("", "150.0") + end + + it "exports mscharge fields and hasservicechargeschanged and newservicecharges" do + expected_content = replace_entity_ids(sales_log, xml_export_file.read) + replace_shared_ownership_values(expected_content) + replace_staircasing_values(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 have_same_xml_contents_as(expected_content) + end + + export_service.export_xml_sales_logs(full_update: true, collection_year: 2026) + end + end end end end