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