diff --git a/app/services/exports/lettings_log_export_service.rb b/app/services/exports/lettings_log_export_service.rb index 4e1fe2019..89b041104 100644 --- a/app/services/exports/lettings_log_export_service.rb +++ b/app/services/exports/lettings_log_export_service.rb @@ -31,7 +31,8 @@ module Exports end def retrieve_resources_from_range(range, year) - relation = LettingsLog.exportable.filter_by_year(year).left_joins(:created_by, :updated_by, :assigned_to, :owning_organisation, :managing_organisation) + relation = LettingsLog.exportable.filter_by_year(year) + .left_joins(:created_by, :updated_by, :assigned_to, :owning_organisation, :managing_organisation) ids = relation .where({ updated_at: range }) @@ -55,6 +56,14 @@ module Exports ) .pluck(:id) + # these must be separate as activerecord struggles to join to two different name change tables in the same query + ids.concat( + relation.left_joins(owning_organisation: :organisation_name_changes).where(owning_organisation: { organisation_name_changes: { updated_at: range } }).pluck(:id), + ) + ids.concat( + relation.left_joins(managing_organisation: :organisation_name_changes).where(managing_organisation: { organisation_name_changes: { updated_at: range } }).pluck(:id), + ) + LettingsLog.where(id: ids) end diff --git a/app/services/exports/sales_log_export_service.rb b/app/services/exports/sales_log_export_service.rb index db525dde4..7fac8d27e 100644 --- a/app/services/exports/sales_log_export_service.rb +++ b/app/services/exports/sales_log_export_service.rb @@ -55,6 +55,14 @@ module Exports ) .pluck(:id) + # these must be separate as activerecord struggles to join to two different name change tables in the same query + ids.concat( + relation.left_joins(owning_organisation: :organisation_name_changes).where(owning_organisation: { organisation_name_changes: { updated_at: range } }).pluck(:id), + ) + ids.concat( + relation.left_joins(managing_organisation: :organisation_name_changes).where(managing_organisation: { organisation_name_changes: { updated_at: range } }).pluck(:id), + ) + SalesLog.where(id: ids) end diff --git a/app/services/exports/user_export_service.rb b/app/services/exports/user_export_service.rb index d79a4df49..0a8ebe34e 100644 --- a/app/services/exports/user_export_service.rb +++ b/app/services/exports/user_export_service.rb @@ -33,7 +33,7 @@ module Exports relation.where.not(organisations: { updated_at: nil }).where(organisations: { updated_at: range }), ) .or( - relation.where(organisation_name_changes: { created_at: range }), + relation.where(organisation_name_changes: { updated_at: range }), ) .pluck(:id) diff --git a/spec/services/exports/lettings_log_export_service_spec.rb b/spec/services/exports/lettings_log_export_service_spec.rb index 38366e83d..02c7f4a2b 100644 --- a/spec/services/exports/lettings_log_export_service_spec.rb +++ b/spec/services/exports/lettings_log_export_service_spec.rb @@ -550,6 +550,22 @@ RSpec.describe Exports::LettingsLogExportService do export_service.export_xml_lettings_logs(collection_year: current_collection_start_year) end + + it "does export the lettings log if owning_organisation name change is created" do + create(:organisation_name_change, organisation: owning_organisation) + + expect(storage_service).to receive(:write_file).with(expected_zip_filename, any_args) + + export_service.export_xml_lettings_logs(collection_year: current_collection_start_year) + end + + it "does export the lettings log if managing_organisation name change is created" do + create(:organisation_name_change, organisation: managing_organisation) + + expect(storage_service).to receive(:write_file).with(expected_zip_filename, any_args) + + export_service.export_xml_lettings_logs(collection_year: current_collection_start_year) + end end end diff --git a/spec/services/exports/sales_log_export_service_spec.rb b/spec/services/exports/sales_log_export_service_spec.rb index 1d54f71e0..5b9a41d02 100644 --- a/spec/services/exports/sales_log_export_service_spec.rb +++ b/spec/services/exports/sales_log_export_service_spec.rb @@ -491,6 +491,22 @@ RSpec.describe Exports::SalesLogExportService do export_service.export_xml_sales_logs(collection_year: current_collection_start_year) end + + it "does export the sales log if owning_organisation name change is created" do + create(:organisation_name_change, organisation: owning_organisation) + + expect(storage_service).to receive(:write_file).with(expected_zip_filename, any_args) + + export_service.export_xml_sales_logs(collection_year: current_collection_start_year) + end + + it "does export the sales log if managing_organisation name change is created" do + create(:organisation_name_change, organisation: managing_organisation) + + expect(storage_service).to receive(:write_file).with(expected_zip_filename, any_args) + + export_service.export_xml_sales_logs(collection_year: current_collection_start_year) + end end end end