Browse Source

CLDC-4028: Ensure logs will update when an organisation name change is created, as they draw the org name

this could lead to redundant exports if the name change does not impact the log at its startdate (which we put into the log), but it'd be more difficult to query this way so fine to be safe here

also query name changes by updated_at. shouldn't really matter as we don't expect name changes to be updated but worth being safe in case we need to update a name change for maintenance reasons
pull/3109/head
Samuel Young 2 months ago
parent
commit
f54e6c7b76
  1. 11
      app/services/exports/lettings_log_export_service.rb
  2. 8
      app/services/exports/sales_log_export_service.rb
  3. 2
      app/services/exports/user_export_service.rb
  4. 16
      spec/services/exports/lettings_log_export_service_spec.rb
  5. 16
      spec/services/exports/sales_log_export_service_spec.rb

11
app/services/exports/lettings_log_export_service.rb

@ -31,7 +31,8 @@ module Exports
end end
def retrieve_resources_from_range(range, year) 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 ids = relation
.where({ updated_at: range }) .where({ updated_at: range })
@ -55,6 +56,14 @@ module Exports
) )
.pluck(:id) .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: { created_at: range } }).pluck(:id),
)
ids.concat(
relation.left_joins(managing_organisation: :organisation_name_changes).where(managing_organisation: { organisation_name_changes: { created_at: range } }).pluck(:id),
)
LettingsLog.where(id: ids) LettingsLog.where(id: ids)
end end

8
app/services/exports/sales_log_export_service.rb

@ -55,6 +55,14 @@ module Exports
) )
.pluck(:id) .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) SalesLog.where(id: ids)
end end

2
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 }), relation.where.not(organisations: { updated_at: nil }).where(organisations: { updated_at: range }),
) )
.or( .or(
relation.where(organisation_name_changes: { created_at: range }), relation.where(organisation_name_changes: { updated_at: range }),
) )
.pluck(:id) .pluck(:id)

16
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) export_service.export_xml_lettings_logs(collection_year: current_collection_start_year)
end 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
end end

16
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) export_service.export_xml_sales_logs(collection_year: current_collection_start_year)
end 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 end
end end

Loading…
Cancel
Save