diff --git a/spec/helpers/merge_requests_helper_spec.rb b/spec/helpers/merge_requests_helper_spec.rb
index 1f4bf5733..8907ce70d 100644
--- a/spec/helpers/merge_requests_helper_spec.rb
+++ b/spec/helpers/merge_requests_helper_spec.rb
@@ -110,4 +110,52 @@ RSpec.describe MergeRequestsHelper do
end
end
end
+
+ describe "when creating relationship outcomes content" do
+ let(:stock_owner1) { create(:organisation, name: "Stock owner 1") }
+ let(:stock_owner2) { create(:organisation, name: "Stock owner 2") }
+ let(:managing_agent1) { create(:organisation, name: "Managing agent 1") }
+ let(:managing_agent2) { create(:organisation, name: "Managing agent 2") }
+ let(:absorbing_organisation) { create(:organisation, name: "Absorbing Org") }
+ let(:merging_organisations) { create_list(:organisation, 2) { |org, i| org.name = "Dummy Org #{i + 1}" } }
+ let(:merge_request) { create(:merge_request, absorbing_organisation:, merging_organisations:) }
+
+ context "when there are no relationships" do
+ it "returns text stating there are no stock owners" do
+ expect(stock_owners_text(merge_request)).to eq("Absorbing Org, Dummy Org 1, and Dummy Org 2 have no stock owners.
")
+ end
+
+ it "returns text stating there are no managing agents" do
+ expect(managing_agent_text(merge_request)).to eq("Absorbing Org, Dummy Org 1, and Dummy Org 2 have no managing agents.
")
+ end
+ end
+
+ context "when there are stock owners" do
+ before do
+ create(:organisation_relationship, child_organisation: absorbing_organisation, parent_organisation: stock_owner1)
+ create(:organisation_relationship, child_organisation: merging_organisations.first, parent_organisation: stock_owner2)
+ create(:organisation_relationship, child_organisation: merging_organisations.first, parent_organisation: stock_owner1)
+ end
+
+ it "returns text stating the relationships" do
+ expect(stock_owners_text(merge_request)).to include("Some of the organisations merging have common stock owners.")
+ expect(stock_owners_text(merge_request)).to include("Dummy Org 2 has no stock owners.")
+ expect(stock_owners_text(merge_request)).to include("View all 2 Dummy Org 1 stock owners (opens in a new tab)")
+ end
+ end
+
+ context "when there are managing agents" do
+ before do
+ create(:organisation_relationship, parent_organisation: absorbing_organisation, child_organisation: managing_agent1)
+ create(:organisation_relationship, parent_organisation: absorbing_organisation, child_organisation: managing_agent2)
+ create(:organisation_relationship, parent_organisation: merging_organisations.first, child_organisation: managing_agent2)
+ end
+
+ it "returns text stating the relationships" do
+ expect(managing_agent_text(merge_request)).to include("Some of the organisations merging have common managing agents.")
+ expect(managing_agent_text(merge_request)).to include("Dummy Org 2 has no managing agents.")
+ expect(managing_agent_text(merge_request)).to include("View the 1 Dummy Org 1 managing agent (opens in a new tab)")
+ end
+ end
+ end
end
diff --git a/spec/models/merge_request_spec.rb b/spec/models/merge_request_spec.rb
index 554ab7a02..a5c66d9f9 100644
--- a/spec/models/merge_request_spec.rb
+++ b/spec/models/merge_request_spec.rb
@@ -397,4 +397,43 @@ RSpec.describe MergeRequest, type: :model do
end
end
end
+
+ describe "relationship outcomes" do
+ let(:stock_owner1) { create(:organisation, name: "Stock owner 1") }
+ let(:stock_owner2) { create(:organisation, name: "Stock owner 2") }
+ let(:stock_owner3) { create(:organisation, name: "Stock owner 3") }
+ let(:managing_agent1) { create(:organisation, name: "Managing agent 1") }
+ let(:managing_agent2) { create(:organisation, name: "Managing agent 2") }
+ let(:absorbing_organisation) { create(:organisation, name: "Absorbing Org") }
+ let(:merging_organisations) { create_list(:organisation, 2) { |org, i| org.name = "Dummy Org #{i + 1}" } }
+ let(:merge_request) { create(:merge_request, absorbing_organisation:, merging_organisations:) }
+
+ before do
+ create(:organisation_relationship, child_organisation: absorbing_organisation, parent_organisation: stock_owner1)
+ create(:organisation_relationship, child_organisation: merging_organisations.first, parent_organisation: stock_owner2)
+ create(:organisation_relationship, child_organisation: merging_organisations.first, parent_organisation: stock_owner1)
+ create(:organisation_relationship, child_organisation: merging_organisations.first, parent_organisation: stock_owner3)
+ create(:organisation_relationship, parent_organisation: absorbing_organisation, child_organisation: managing_agent1)
+ create(:organisation_relationship, parent_organisation: absorbing_organisation, child_organisation: managing_agent2)
+ create(:organisation_relationship, parent_organisation: merging_organisations.first, child_organisation: managing_agent2)
+ end
+
+ describe "#total_stock_owners_after_merge" do
+ it "returns the correct count of stock owners after merge" do
+ expect(merge_request.total_stock_owners_after_merge).to eq(2)
+ end
+ end
+
+ describe "#total_managing_agents_after_merge"do
+ it "returns the correct count of managing agents after merge" do
+ expect(merge_request.total_managing_agents_after_merge).to eq(1)
+ end
+ end
+
+ describe "#total_stock_owners_managing_agents_label" do
+ it "returns the correct label" do
+ expect(merge_request.total_stock_owners_managing_agents_label).to eq("2 stock owners\n1 managing agent")
+ end
+ end
+ end
end