From dc9540db517b823f56870047779de7262aff15b2 Mon Sep 17 00:00:00 2001 From: Kat Date: Thu, 30 Nov 2023 12:00:21 +0000 Subject: [PATCH] Allow bulk uploading for merged organisations --- app/models/organisation.rb | 5 +++++ .../lettings/year2023/row_parser_spec.rb | 19 +++++++++++++++++++ .../sales/year2023/row_parser_spec.rb | 19 +++++++++++++++++++ 3 files changed, 43 insertions(+) diff --git a/app/models/organisation.rb b/app/models/organisation.rb index 077f0413e..da6a92d0d 100644 --- a/app/models/organisation.rb +++ b/app/models/organisation.rb @@ -25,6 +25,11 @@ class Organisation < ApplicationRecord ids << id end + absorbed_organisations.each do |organisation| + ids.concat(organisation.stock_owners.pluck(:id)) + ids << organisation.id if organisation.holds_own_stock? + end + ids.concat(stock_owners.pluck(:id)) Organisation.where(id: ids) diff --git a/spec/services/bulk_upload/lettings/year2023/row_parser_spec.rb b/spec/services/bulk_upload/lettings/year2023/row_parser_spec.rb index 86e45ca2d..92d5a76c8 100644 --- a/spec/services/bulk_upload/lettings/year2023/row_parser_spec.rb +++ b/spec/services/bulk_upload/lettings/year2023/row_parser_spec.rb @@ -1384,6 +1384,25 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do expect(parser).to be_block_log_creation end end + + context "when user's org has absorbed owning organisation" do + let(:merged_org) { create(:organisation, :with_old_visible_id, holds_own_stock: true) } + let(:merged_org_stock_owner) { create(:organisation, :with_old_visible_id, holds_own_stock: true) } + + let(:attributes) { { bulk_upload:, field_1: merged_org_stock_owner.old_visible_id } } + + before do + create(:organisation_relationship, parent_organisation: merged_org_stock_owner, child_organisation: merged_org) + merged_org.update!(absorbing_organisation: user.organisation, merge_date: Time.zone.today) + merged_org.reload + user.organisation.reload + end + + it "is permitted" do + parser.valid? + expect(parser.errors.where(:field_1)).not_to be_present + end + end end describe "#field_2" do # managing org diff --git a/spec/services/bulk_upload/sales/year2023/row_parser_spec.rb b/spec/services/bulk_upload/sales/year2023/row_parser_spec.rb index 0745274fc..99ea4076f 100644 --- a/spec/services/bulk_upload/sales/year2023/row_parser_spec.rb +++ b/spec/services/bulk_upload/sales/year2023/row_parser_spec.rb @@ -417,6 +417,25 @@ RSpec.describe BulkUpload::Sales::Year2023::RowParser do expect(parser).to be_block_log_creation end end + + context "when user's org has absorbed owning organisation" do + let(:merged_org) { create(:organisation, :with_old_visible_id, holds_own_stock: true) } + let(:merged_org_stock_owner) { create(:organisation, :with_old_visible_id, holds_own_stock: true) } + + let(:attributes) { { bulk_upload:, field_1: merged_org_stock_owner.old_visible_id } } + + before do + create(:organisation_relationship, parent_organisation: merged_org_stock_owner, child_organisation: merged_org) + merged_org.update!(absorbing_organisation: user.organisation, merge_date: Time.zone.today) + merged_org.reload + user.organisation.reload + end + + it "is permitted" do + parser.valid? + expect(parser.errors.where(:field_1)).not_to be_present + end + end end describe "#field_2" do # username for created_by