require "rails_helper" RSpec.describe MergeRequestsController, type: :request do let(:organisation) { user.organisation } let(:other_organisation) { create(:organisation, name: "Other Test Org") } let(:headers) { { "Accept" => "text/html" } } let(:page) { Capybara::Node::Simple.new(response.body) } let(:user) { create(:user, :data_coordinator) } let(:support_user) { create(:user, :support, organisation:) } let(:merge_request) { MergeRequest.create!(requesting_organisation: organisation) } let(:other_merge_request) { MergeRequest.create!(requesting_organisation: other_organisation) } context "when user is signed in with a support user" do before do allow(support_user).to receive(:need_two_factor_authentication?).and_return(false) sign_in support_user end context "when creating a new merge request" do let(:params) { { merge_request: { requesting_organisation_id: support_user.organisation_id } } } before do post "/merge-request", headers:, params: end it "creates merge request with requesting organisation" do follow_redirect! expect(page).to have_content("Which organisation is absorbing the others?") expect(MergeRequest.first.requesting_organisation_id).to eq(support_user.organisation_id) end context "when passing a different requesting organisation id" do let(:params) { { merge_request: { requesting_organisation_id: other_organisation.id } } } it "creates merge request with current user organisation" do follow_redirect! expect(MergeRequest.count).to eq(1) expect(MergeRequest.first.requesting_organisation_id).to eq(support_user.organisation_id) expect(MergeRequest.first.merging_organisations.count).to eq(0) end end end describe "#merging-organisations" do context "when viewing merging organisations page" do before do merge_request.update!(absorbing_organisation_id: organisation.id) get "/merge-request/#{merge_request.id}/merging-organisations", headers: end it "shows the correct content" do expect(page).to have_content("Which organisations are merging into MHCLG?") end end end describe "#update_merging_organisations" do let(:params) { { merge_request: { merging_organisation: other_organisation.id, new_merging_org_ids: [] } } } context "when updating a merge request with a new merging organisation" do before do patch "/merge-request/#{merge_request.id}/merging-organisations", headers:, params: end it "adds merging organisation to the page" do merge_request.reload expect(page).to have_content("MHCLG") expect(page).to have_content("Other Test Org") expect(page).to have_link("Remove") end end context "when the user selects an organisation that requested another merge" do let(:params) { { merge_request: { merging_organisation: other_organisation.id, new_merging_org_ids: [] } } } before do MergeRequest.create!(requesting_organisation_id: other_organisation.id, request_merged: true) patch "/merge-request/#{merge_request.id}/merging-organisations", headers:, params: end it "does not error" do merge_request.reload expect(page).not_to have_content(I18n.t("validations.merge_request.organisation_part_of_another_merge")) end end context "when the user selects an organisation that is a part of another merge" do let(:another_organisation) { create(:organisation) } let(:params) { { merge_request: { merging_organisation: another_organisation.id, new_merging_org_ids: [] } } } before do existing_merge_request = MergeRequest.create!(requesting_organisation_id: other_organisation.id, request_merged: true) MergeRequestOrganisation.create!(merge_request_id: existing_merge_request.id, merging_organisation_id: another_organisation.id) patch "/merge-request/#{merge_request.id}/merging-organisations", headers:, params: end it "does not update the merge request" do merge_request.reload expect(merge_request.merging_organisations.count).to eq(0) expect(response).to have_http_status(:unprocessable_entity) expect(page).to have_content(I18n.t("validations.merge_request.organisation_part_of_another_merge")) end end context "when the user selects an organisation that is a part of another incomplete merge" do let(:another_organisation) { create(:organisation) } let(:params) { { merge_request: { merging_organisation: another_organisation.id, new_merging_org_ids: [] } } } before do existing_merge_request = MergeRequest.create!(requesting_organisation_id: other_organisation.id) MergeRequestOrganisation.create!(merge_request_id: existing_merge_request.id, merging_organisation_id: another_organisation.id) patch "/merge-request/#{merge_request.id}/merging-organisations", headers:, params: end it "does not error" do merge_request.reload expect(page).not_to have_content(I18n.t("validations.merge_request.organisation_part_of_another_merge")) end end context "when the user selects an organisation that is a part of current merge" do let(:another_organisation) { create(:organisation) } let(:params) { { merge_request: { merging_organisation: another_organisation.id, new_merging_org_ids: [] } } } before do merge_request.merging_organisations << another_organisation patch "/merge-request/#{merge_request.id}/merging-organisations", headers:, params: end it "does not update the merge request" do merge_request.reload expect(merge_request.merging_organisations.count).to eq(1) end end context "when the user does not select an organisation" do let(:params) { { merge_request: { merging_organisation: nil, new_merging_org_ids: [] } } } before do patch "/merge-request/#{merge_request.id}/merging-organisations", headers:, params: end it "does not update the merge request" do merge_request.reload expect(merge_request.merging_organisations.count).to eq(0) expect(response).to have_http_status(:unprocessable_entity) expect(page).to have_content(I18n.t("validations.merge_request.organisation_not_selected")) end end context "when the user selects non existent id" do let(:params) { { merge_request: { merging_organisation: "clearly_not_an_id", new_merging_org_ids: [] } } } before do patch "/merge-request/#{merge_request.id}/merging-organisations", headers:, params: end it "does not update the merge request" do merge_request.reload expect(merge_request.merging_organisations.count).to eq(0) expect(response).to have_http_status(:unprocessable_entity) expect(page).to have_content(I18n.t("validations.merge_request.organisation_not_selected")) end end end describe "#remove_organisation" do let(:params) { { merge_request: { merging_organisation: other_organisation.id } } } context "when removing an organisation from merge request" do before do MergeRequestOrganisation.create!(merge_request_id: merge_request.id, merging_organisation_id: other_organisation.id) get "/merge-request/#{merge_request.id}/merging-organisations/remove", headers:, params: end it "updates the merge request" do expect(merge_request.merging_organisations.count).to eq(0) expect(page).not_to have_link("Remove") end end context "when removing an organisation that is not part of a merge from merge request" do before do get "/merge-request/#{merge_request.id}/merging-organisations/remove", headers:, params: end it "does not throw an error" do expect(merge_request.merging_organisations.count).to eq(0) expect(page).not_to have_link("Remove") end end end describe "#absorbing_organisation" do let(:merge_request) { MergeRequest.create!(requesting_organisation: organisation) } before { get "/merge-request/#{merge_request.id}/absorbing-organisation", headers: } it "asks for the absorbing organisation" do expect(page).to have_content("Which organisation is absorbing the others?") expect(page).to have_content("Select organisation name") end it "has the correct back button" do expect(page).to have_link("Back", href: organisations_path(tab: "merge-requests")) end end describe "#merge_date" do context "when viewing merge date page" do before do merge_request.update!(absorbing_organisation_id: organisation.id) get "/merge-request/#{merge_request.id}/merge-date", headers: end it "shows the correct content" do expect(page).to have_content("What is the merge date?") end end end describe "#existing_absorbing_organisation" do context "when viewing helpdesk ticket page" do before do merge_request.update!(absorbing_organisation_id: organisation.id, merge_date: Time.zone.today) get "/merge-request/#{merge_request.id}/existing-absorbing-organisation", headers: end it "shows the correct content" do expect(page).to have_content("Was #{merge_request.absorbing_organisation.name} already active before the merge date?") expect(page).to have_content("Yes, this organisation existed before the merge") expect(page).to have_content("No, it is a new organisation created by this merge") expect(page).to have_link("Back", href: merge_date_merge_request_path(merge_request)) expect(page).to have_button("Save and continue") end end end describe "#helpdesk_ticket" do context "when viewing helpdesk ticket page" do before do merge_request.update!(absorbing_organisation_id: organisation.id, merge_date: Time.zone.today) get "/merge-request/#{merge_request.id}/helpdesk-ticket", headers: end it "shows the correct content" do expect(page).to have_content("Which helpdesk ticket reported this merge?") expect(page).to have_link("Back", href: existing_absorbing_organisation_merge_request_path(merge_request)) expect(page).to have_button("Save and continue") end end end describe "#update" do describe "from absorbing_organisation page" do context "when not answering the question" do let(:merge_request) { MergeRequest.create!(requesting_organisation: organisation, absorbing_organisation: other_organisation) } let(:params) do { merge_request: { page: "absorbing_organisation" } } end let(:request) do patch "/merge-request/#{merge_request.id}", headers:, params: end it "renders the error" do request expect(page).to have_content("Select the absorbing organisation") end it "does not update the request" do expect { request }.not_to(change { merge_request.reload.attributes }) end end context "when absorbing_organisation_id set to id" do let(:merge_request) { MergeRequest.create!(requesting_organisation: organisation) } let(:params) do { merge_request: { absorbing_organisation_id: other_organisation.id, page: "absorbing_organisation" } } end let(:request) do patch "/merge-request/#{merge_request.id}", headers:, params: end it "redirects to merging organisations path" do request expect(response).to redirect_to(merging_organisations_merge_request_path(merge_request)) end it "updates absorbing_organisation_id" do expect { request }.to change { merge_request.reload.absorbing_organisation }.from(nil).to(other_organisation) end end context "when updating from check_answers page" do let(:merge_request) { MergeRequest.create!(requesting_organisation: organisation) } let(:params) do { merge_request: { absorbing_organisation_id: "", page: "absorbing_organisation" } } end let(:request) do patch "/merge-request/#{merge_request.id}?referrer=check_answers", headers:, params: end it "keeps corrent links if validation fails" do request expect(page).to have_link("Cancel", href: merge_request_path(merge_request)) expect(page).to have_button("Save changes") end end context "when absorbing_organisation_id set to one of the merging organisations" do let(:merge_request) { MergeRequest.create!(requesting_organisation: organisation) } let(:params) do { merge_request: { absorbing_organisation_id: other_organisation.id, page: "absorbing_organisation" } } end let(:request) do MergeRequestOrganisation.create!(merge_request_id: merge_request.id, merging_organisation_id: other_organisation.id) patch "/merge-request/#{merge_request.id}", headers:, params: end it "removes organisation from merge request organisations" do request merge_request.reload expect(merge_request.merging_organisations.count).to eq(0) end end end describe "from merge_date page" do context "when not answering the question" do let(:merge_request) { MergeRequest.create!(requesting_organisation: organisation, absorbing_organisation: other_organisation) } let(:params) do { merge_request: { page: "merge_date" } } end let(:request) do patch "/merge-request/#{merge_request.id}", headers:, params: end it "renders the error" do request expect(response).to have_http_status(:unprocessable_entity) expect(page).to have_content("Enter a merge date") end it "does not update the request" do expect { request }.not_to(change { merge_request.reload.attributes }) end end context "when merge date set to an invalid date" do let(:merge_request) { MergeRequest.create!(requesting_organisation: organisation) } let(:params) do { merge_request: { page: "merge_date", "merge_date(3i)": "10", "merge_date(2i)": "44", "merge_date(1i)": "2022" } } end let(:request) do patch "/merge-request/#{merge_request.id}", headers:, params: end it "displays the page with an error message" do request expect(response).to have_http_status(:unprocessable_entity) expect(page).to have_content("Enter a valid merge date") end end context "when merge date set to a valid date" do let(:merge_request) { MergeRequest.create!(requesting_organisation: organisation) } let(:params) do { merge_request: { page: "merge_date", "merge_date(3i)": "10", "merge_date(2i)": "4", "merge_date(1i)": "2022" } } end let(:request) do patch "/merge-request/#{merge_request.id}", headers:, params: end it "redirects to existing absorbing organisation path" do request expect(response).to redirect_to(existing_absorbing_organisation_merge_request_path(merge_request)) end it "updates merge_date" do expect { request }.to change { merge_request.reload.merge_date }.from(nil).to(Time.zone.local(2022, 4, 10)) end end end describe "from merging_organisations page" do context "when the user updates merge request with valid merging organisation ID" do let(:merge_request) { MergeRequest.create!(requesting_organisation: organisation) } let(:another_organisation) { create(:organisation) } let(:params) do { merge_request: { page: "merging_organisations", new_merging_org_ids: another_organisation.id } } end let(:request) do patch "/merge-request/#{merge_request.id}", headers:, params: end it "updates the merge request" do request merge_request.reload expect(merge_request.merging_organisations.count).to eq(1) expect(merge_request.merging_organisations.first.id).to eq(another_organisation.id) end end end describe "from existing_absorbing_organisation page" do context "when not answering the question" do let(:merge_request) { MergeRequest.create!(requesting_organisation: organisation, absorbing_organisation: other_organisation) } let(:params) do { merge_request: { page: "existing_absorbing_organisation" } } end let(:request) do patch "/merge-request/#{merge_request.id}", headers:, params: end it "renders the error" do request expect(response).to have_http_status(:unprocessable_entity) expect(page).to have_content("You must answer absorbing organisation already active?") end it "does not update the request" do expect { request }.not_to(change { merge_request.reload.attributes }) end end end end describe "#merge_start_confirmation" do before do get "/merge-request/#{merge_request.id}/merge-start-confirmation", headers: end it "has correct content" do expect(page).to have_content("Are you sure you want to begin this merge?") expect(page).to have_content("You will not be able to undo this action") expect(page).to have_link("Back", href: merge_request_path(merge_request)) expect(page).to have_button("Begin merge") end end describe "#start_merge" do let(:merge_request) { MergeRequest.create!(requesting_organisation: organisation, absorbing_organisation: organisation, merge_date: Time.zone.local(2022, 3, 3), existing_absorbing_organisation: true) } let(:merging_organisation) { create(:organisation, name: "Merging Test Org") } before do allow(ProcessMergeRequestJob).to receive(:perform_later).and_return(nil) end context "when merge request is ready to merge" do before do create(:merge_request_organisation, merge_request:, merging_organisation: other_organisation) create(:merge_request_organisation, merge_request:, merging_organisation:) create_list(:scheme, 2, owning_organisation: organisation) create(:lettings_log, owning_organisation: organisation) create(:sales_log, owning_organisation: organisation) end it "runs the job with correct merge request" do expect(merge_request.reload.status).to eq("ready_to_merge") expect(ProcessMergeRequestJob).to receive(:perform_later).with(merge_request:).once patch "/merge-request/#{merge_request.id}/start-merge" expect(merge_request.reload.status).to eq("processing") expect(merge_request.total_users).to eq(5) expect(merge_request.total_schemes).to eq(2) expect(merge_request.total_stock_owners).to eq(0) expect(merge_request.total_managing_agents).to eq(0) expect(merge_request.total_lettings_logs).to eq(1) expect(merge_request.total_sales_logs).to eq(1) end end context "when merge request is not ready to merge" do it "does not run the job" do expect(merge_request.status).to eq("incomplete") expect(ProcessMergeRequestJob).not_to receive(:perform_later).with(merge_request:) patch "/merge-request/#{merge_request.id}/start-merge" expect(merge_request.reload.status).to eq("incomplete") end end end describe "#show" do before do create(:merge_request_organisation, merge_request:, merging_organisation: other_organisation) create_list(:scheme, 2, owning_organisation: organisation) create_list(:scheme, 2, owning_organisation: other_organisation) create(:lettings_log, owning_organisation: organisation) create(:lettings_log, owning_organisation: other_organisation) create_list(:sales_log, 2, owning_organisation: other_organisation) create(:sales_log, owning_organisation: organisation) get "/merge-request/#{merge_request.id}", headers: end context "when request has previously failed" do let(:merge_request) { create(:merge_request, last_failed_attempt: Time.zone.yesterday) } it "shows a banner" do expect(page).to have_content("An error occurred while processing the merge.") expect(page).to have_content("No changes have been made. Try beginning the merge again.") end end context "when request has not previously failed" do let(:merge_request) { create(:merge_request, last_failed_attempt: nil) } it "does not show a banner" do expect(page).not_to have_content("An error occurred while processing the merge.") expect(page).not_to have_content("No changes have been made. Try beginning the merge again.") end end it "has begin merge button" do expect(page).to have_link("Begin merge", href: merge_start_confirmation_merge_request_path(merge_request)) end context "with unmerged request" do let(:merge_request) { create(:merge_request, absorbing_organisation_id: organisation.id, merge_date: Time.zone.today, existing_absorbing_organisation: true) } it "shows outcomes count and has links to view merge outcomes" do expect(page).to have_link("View", href: user_outcomes_merge_request_path(merge_request)) expect(page).to have_link("View", href: scheme_outcomes_merge_request_path(merge_request)) expect(page).to have_link("View", href: relationship_outcomes_merge_request_path(merge_request)) expect(page).to have_link("View", href: logs_outcomes_merge_request_path(merge_request)) expect(page).to have_content("4 users") expect(page).to have_content("4 schemes") expect(page).to have_content("0 stock owners") expect(page).to have_content("0 managing agents") expect(page).to have_content("2 lettings logs") expect(page).to have_content("3 sales logs") end end context "with a merged request" do let(:merge_request) { create(:merge_request, request_merged: true, total_users: 34, total_schemes: 12, total_stock_owners: 8, total_managing_agents: 5, total_lettings_logs: 4, total_sales_logs: 5) } it "shows saved users count and doesn't have links to view merge outcomes" do expect(merge_request.status).to eq("request_merged") expect(page).not_to have_link("View", href: user_outcomes_merge_request_path(merge_request)) expect(page).to have_content("34 users") end it "shows saved schemes count and doesn't have links to view merge outcomes" do expect(merge_request.status).to eq("request_merged") expect(page).not_to have_link("View", href: scheme_outcomes_merge_request_path(merge_request)) expect(page).to have_content("12 schemes") end it "shows stock owners and managing agents count and doesn't have links to view merge outcomes" do expect(merge_request.status).to eq("request_merged") expect(page).not_to have_link("View", href: relationship_outcomes_merge_request_path(merge_request)) expect(page).to have_content("8 stock owners") expect(page).to have_content("5 managing agents") end it "shows logs counts and doesn't have links to view merge outcomes" do expect(merge_request.status).to eq("request_merged") expect(page).not_to have_link("View", href: logs_outcomes_merge_request_path(merge_request)) expect(page).to have_content("4 lettings logs") expect(page).to have_content("5 sales logs") end end context "with a processing request" do let(:merge_request) { create(:merge_request, processing: true, total_users: 51, total_schemes: 33, total_stock_owners: 15, total_managing_agents: 20) } it "shows saved users count and doesn't have links to view merge outcomes" do expect(merge_request.status).to eq("processing") expect(page).not_to have_link("View", href: user_outcomes_merge_request_path(merge_request)) expect(page).to have_content("51 users") end it "shows saved schemes count and doesn't have links to view merge outcomes" do expect(merge_request.status).to eq("processing") expect(page).not_to have_link("View", href: scheme_outcomes_merge_request_path(merge_request)) expect(page).to have_content("33 schemes") end it "shows stock owners and managing agents count and doesn't have links to view merge outcomes" do expect(merge_request.status).to eq("processing") expect(page).not_to have_link("View", href: relationship_outcomes_merge_request_path(merge_request)) expect(page).to have_content("15 stock owners") expect(page).to have_content("20 managing agents") end end end describe "#user_outcomes" do let(:merge_request) { create(:merge_request, absorbing_organisation: organisation) } let(:organisation_with_no_users) { create(:organisation, name: "Organisation with no users", with_dsa: false) } let(:organisation_with_no_users_too) { create(:organisation, name: "Organisation with no users too", with_dsa: false) } let(:organisation_with_some_users) { create(:organisation, name: "Organisation with some users", with_dsa: false) } let(:organisation_with_some_more_users) { create(:organisation, name: "Organisation with many users", with_dsa: false) } before do create_list(:user, 4, organisation: organisation_with_some_users) create_list(:user, 12, organisation: organisation_with_some_more_users) create(:merge_request_organisation, merge_request:, merging_organisation: organisation_with_no_users) create(:merge_request_organisation, merge_request:, merging_organisation: organisation_with_no_users_too) create(:merge_request_organisation, merge_request:, merging_organisation: organisation_with_some_users) create(:merge_request_organisation, merge_request:, merging_organisation: organisation_with_some_more_users) get "/merge-request/#{merge_request.id}/user-outcomes", headers: end it "shows user outcomes after merge" do expect(page).to have_link("View all 4 Organisation with some users users (opens in a new tab)", href: users_organisation_path(organisation_with_some_users)) expect(page).to have_link("View all 12 Organisation with many users users (opens in a new tab)", href: users_organisation_path(organisation_with_some_more_users)) expect(page).to have_link("View all 3 MHCLG users (opens in a new tab)", href: users_organisation_path(organisation)) expect(page).to have_content("Organisation with no users and Organisation with no users too have no users.") expect(page).to have_content("19 users after merge") end end describe "#scheme_outcomes" do let(:merge_request) { create(:merge_request, absorbing_organisation: organisation) } let(:organisation_with_no_schemes) { create(:organisation, name: "Organisation with no schemes") } let(:organisation_with_no_schemes_too) { create(:organisation, name: "Organisation with no schemes too") } let(:organisation_with_some_schemes) { create(:organisation, name: "Organisation with some schemes") } let(:organisation_with_some_more_schemes) { create(:organisation, name: "Organisation with many schemes") } before do create_list(:scheme, 4, owning_organisation: organisation_with_some_schemes) create_list(:scheme, 6, owning_organisation: organisation_with_some_more_schemes) create_list(:scheme, 3, owning_organisation: organisation) create(:merge_request_organisation, merge_request:, merging_organisation: organisation_with_no_schemes) create(:merge_request_organisation, merge_request:, merging_organisation: organisation_with_no_schemes_too) create(:merge_request_organisation, merge_request:, merging_organisation: organisation_with_some_schemes) create(:merge_request_organisation, merge_request:, merging_organisation: organisation_with_some_more_schemes) get "/merge-request/#{merge_request.id}/scheme-outcomes", headers: end it "shows scheme outcomes after merge" do expect(page).to have_link("View all 4 Organisation with some schemes schemes (opens in a new tab)", href: schemes_organisation_path(organisation_with_some_schemes)) expect(page).to have_link("View all 6 Organisation with many schemes schemes (opens in a new tab)", href: schemes_organisation_path(organisation_with_some_more_schemes)) expect(page).to have_link("View all 3 MHCLG schemes (opens in a new tab)", href: schemes_organisation_path(organisation)) expect(page).to have_content("Organisation with no schemes and Organisation with no schemes too have no schemes.") expect(page).to have_content("13 schemes after merge") end end describe "#logs_outcomes" do let(:merge_request) { create(:merge_request, absorbing_organisation: organisation) } let(:organisation_with_no_logs) { create(:organisation, name: "Organisation with no logs") } let(:organisation_with_no_logs_too) { create(:organisation, name: "Organisation with no logs too") } let(:organisation_with_some_logs) { create(:organisation, name: "Organisation with some logs") } before do create_list(:lettings_log, 4, owning_organisation: organisation_with_some_logs) create_list(:sales_log, 2, owning_organisation: organisation_with_some_logs) create_list(:lettings_log, 2, owning_organisation: organisation) create_list(:sales_log, 3, owning_organisation: organisation) create(:merge_request_organisation, merge_request:, merging_organisation: organisation_with_no_logs) create(:merge_request_organisation, merge_request:, merging_organisation: organisation_with_no_logs_too) create(:merge_request_organisation, merge_request:, merging_organisation: organisation_with_some_logs) get "/merge-request/#{merge_request.id}/logs-outcomes", headers: end it "shows logs outcomes after merge" do expect(page).to have_link("View all 4 Organisation with some logs lettings logs (opens in a new tab)", href: lettings_logs_organisation_path(organisation_with_some_logs)) expect(page).to have_link("View all 2 Organisation with some logs sales logs (opens in a new tab)", href: sales_logs_organisation_path(organisation_with_some_logs)) expect(page).to have_link("View all 2 MHCLG lettings logs (opens in a new tab)", href: lettings_logs_organisation_path(organisation)) expect(page).to have_link("View all 3 MHCLG sales logs (opens in a new tab)", href: sales_logs_organisation_path(organisation)) expect(page).to have_content("Organisation with no logs and Organisation with no logs too have no lettings logs.") expect(page).to have_content("Organisation with no logs and Organisation with no logs too have no sales logs.") expect(page).to have_content("6 lettings logs after merge") expect(page).to have_content("5 sales logs after merge") end end end context "when user is signed in with a data coordinator user" do before do sign_in user end describe "#merging_organisations" do let(:params) { { merge_request: { requesting_organisation_id: other_organisation.id } } } context "when creating a new merge request" do before do post "/merge-request", headers:, params: end it "does not allow creating a new merge request" do expect(response).to have_http_status(:not_found) end end context "when viewing existing merge request" do before do get "/merge-request/#{merge_request.id}/merging-organisations", headers:, params: end it "does not allow viewing a merge request" do expect(response).to have_http_status(:not_found) end end end describe "#update_merging_organisations" do let(:params) { { merge_request: { merging_organisation: other_organisation.id } } } context "when updating a merge request with a new organisation" do before do patch "/merge-request/#{merge_request.id}/merging-organisations", headers:, params: end it "does not allow updaing a merge request" do expect(response).to have_http_status(:not_found) end end end describe "#remove_merging_organisation" do let(:params) { { merge_request: { merging_organisation: other_organisation.id } } } context "when removing an organisation from merge request" do before do MergeRequestOrganisation.create!(merge_request_id: merge_request.id, merging_organisation_id: other_organisation.id) get "/merge-request/#{merge_request.id}/merging-organisations/remove", headers:, params: end it "does not allow removing an organisation" do expect(response).to have_http_status(:not_found) end end end describe "#update" do describe "from absorbing_organisation page" do context "when absorbing_organisation_id set to id" do let(:merge_request) { MergeRequest.create!(requesting_organisation: organisation) } let(:params) do { merge_request: { absorbing_organisation_id: other_organisation.id, page: "absorbing_organisation" } } end before do patch "/merge-request/#{merge_request.id}", headers:, params: end it "does not allow updating absorbing organisation" do expect(response).to have_http_status(:not_found) end end end end end end