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
CLDC-4028-ensure-org-name-changes-are-accounted-for-correctly
Samuel Young 5 days ago
parent
commit
833eb4a326
  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
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: { 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)
end

8
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

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 }),
)
.or(
relation.where(organisation_name_changes: { created_at: range }),
relation.where(organisation_name_changes: { updated_at: range }),
)
.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)
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

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)
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

Loading…
Cancel
Save