Browse Source

Add more tests for merging relationships

pull/1801/head
Kat 3 years ago
parent
commit
27a64dddce
  1. 43
      spec/services/merge/merge_organisations_service_spec.rb

43
spec/services/merge/merge_organisations_service_spec.rb

@ -254,6 +254,49 @@ RSpec.describe Merge::MergeOrganisationsService do
expect(merging_organisation.merge_date).to eq(nil)
expect(merging_organisation_user.organisation).to eq(merging_organisation)
end
context "and merging organisation relationships" do
let(:other_organisation) { create(:organisation) }
let!(:merging_organisation_relationship) { create(:organisation_relationship, parent_organisation: merging_organisation) }
let!(:absorbing_organisation_relationship) { create(:organisation_relationship, parent_organisation: absorbing_organisation) }
before do
create(:organisation_relationship, parent_organisation: merging_organisation, child_organisation: absorbing_organisation)
create(:organisation_relationship, parent_organisation: merging_organisation, child_organisation: other_organisation)
create(:organisation_relationship, parent_organisation: absorbing_organisation, child_organisation: other_organisation)
create(:organisation_relationship, parent_organisation: merging_organisation, child_organisation: merging_organisation_too)
end
it "combines organisation relationships" do
merge_organisations_service.call
absorbing_organisation.reload
expect(absorbing_organisation.child_organisations).to include(other_organisation)
expect(absorbing_organisation.child_organisations).to include(absorbing_organisation_relationship.child_organisation)
expect(absorbing_organisation.child_organisations).to include(merging_organisation_relationship.child_organisation)
expect(absorbing_organisation.child_organisations).not_to include(merging_organisation)
expect(absorbing_organisation.parent_organisations).not_to include(merging_organisation)
expect(absorbing_organisation.child_organisations).not_to include(merging_organisation_too)
expect(absorbing_organisation.parent_organisations).not_to include(merging_organisation_too)
expect(absorbing_organisation.parent_organisations.count).to eq(0)
expect(absorbing_organisation.child_organisations.count).to eq(3)
end
it "rolls back if there's an error" do
allow(Organisation).to receive(:find).with([merging_organisation_ids]).and_return(Organisation.find(merging_organisation_ids))
allow(Organisation).to receive(:find).with(absorbing_organisation.id).and_return(absorbing_organisation)
allow(absorbing_organisation).to receive(:save!).and_raise(ActiveRecord::RecordInvalid)
expect(Rails.logger).to receive(:error).with("Organisation merge failed with: Record invalid")
merge_organisations_service.call
absorbing_organisation.reload
expect(absorbing_organisation.child_organisations.count).to eq(2)
expect(absorbing_organisation.parent_organisations.count).to eq(1)
expect(absorbing_organisation.child_organisations).to include(other_organisation)
expect(absorbing_organisation.parent_organisations).to include(merging_organisation)
expect(absorbing_organisation.child_organisations).to include(absorbing_organisation_relationship.child_organisation)
end
end
end
end
end

Loading…
Cancel
Save