diff --git a/app/helpers/merge_requests_helper.rb b/app/helpers/merge_requests_helper.rb index 31e6fb807..130b4dd32 100644 --- a/app/helpers/merge_requests_helper.rb +++ b/app/helpers/merge_requests_helper.rb @@ -19,6 +19,7 @@ module MergeRequestsHelper { label: "Absorbing organisation", value: display_value_or_placeholder(merge_request.absorbing_organisation_name), action: merge_request_action(merge_request, "absorbing_organisation") }, { label: "Merging organisations", value: merge_request.merge_request_organisations.any? ? merge_request.merge_request_organisations.map(&:merging_organisation_name).join("
").html_safe : display_value_or_placeholder(nil), action: merge_request_action(merge_request, "merging_organisations") }, { label: "Merge date", value: display_value_or_placeholder(merge_request.merge_date), action: merge_request_action(merge_request, "merge_date") }, + { label: "Absorbing organisation already active?", value: display_value_or_placeholder(merge_request.existing_absorbing_organisation_label), action: merge_request_action(merge_request, "existing_absorbing_organisation") }, ] end diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index fe45bd18e..d23568df1 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -47,6 +47,7 @@ class MergeRequest < ApplicationRecord def required_questions_answered? absorbing_organisation_id.present? && merge_date.present? && + existing_absorbing_organisation.present? && merging_organisations.count.positive? && errors.empty? end @@ -98,4 +99,10 @@ class MergeRequest < ApplicationRecord ([absorbing_organisation] + merging_organisations).reject(&:has_visible_schemes?) end + + def existing_absorbing_organisation_label + return if existing_absorbing_organisation.nil? + + existing_absorbing_organisation ? "Yes" : "No" + end end diff --git a/app/views/merge_requests/existing_absorbing_organisation.html.erb b/app/views/merge_requests/existing_absorbing_organisation.html.erb index 9a13905b5..ce6628a35 100644 --- a/app/views/merge_requests/existing_absorbing_organisation.html.erb +++ b/app/views/merge_requests/existing_absorbing_organisation.html.erb @@ -18,7 +18,10 @@ <% end %> <%= f.hidden_field :page, value: "existing_absorbing_organisation" %> - <%= f.govuk_submit submit_merge_request_button_text(request.query_parameters["referrer"]) %> +
+ <%= f.govuk_submit submit_merge_request_button_text(request.query_parameters["referrer"]) %> + <%= govuk_link_to(secondary_merge_request_link_text(request.query_parameters["referrer"]), merge_request_path(@merge_request)) %> +
<% end %> diff --git a/spec/models/merge_request_spec.rb b/spec/models/merge_request_spec.rb index 554ab7a02..4f3b3c812 100644 --- a/spec/models/merge_request_spec.rb +++ b/spec/models/merge_request_spec.rb @@ -55,13 +55,13 @@ RSpec.describe MergeRequest, type: :model do end it "returns the correct status for a ready to merge request" do - merge_request = build(:merge_request, id: 1, absorbing_organisation: create(:organisation), merge_date: Time.zone.today) + merge_request = build(:merge_request, id: 1, absorbing_organisation: create(:organisation), merge_date: Time.zone.today, existing_absorbing_organisation: true) create(:merge_request_organisation, merge_request:) expect(merge_request.status).to eq MergeRequest::STATUS[:ready_to_merge] end it "returns the merge issues if dsa is not signed for absorbing organisation" do - merge_request = build(:merge_request, id: 1, absorbing_organisation: create(:organisation, with_dsa: false), merge_date: Time.zone.today) + merge_request = build(:merge_request, id: 1, absorbing_organisation: create(:organisation, with_dsa: false), merge_date: Time.zone.today, existing_absorbing_organisation: true) create(:merge_request_organisation, merge_request:) expect(merge_request.status).to eq MergeRequest::STATUS[:merge_issues] end @@ -83,6 +83,12 @@ RSpec.describe MergeRequest, type: :model do expect(merge_request.status).to eq MergeRequest::STATUS[:incomplete] end + it "returns the incomplete if existing absorbing organisation is missing" do + merge_request = build(:merge_request, id: 1, absorbing_organisation: create(:organisation, with_dsa: false), merge_date: Time.zone.today) + create(:merge_request_organisation, merge_request:) + expect(merge_request.status).to eq MergeRequest::STATUS[:incomplete] + end + it "returns processing if merge is processing" do merge_request = build(:merge_request, id: 1, absorbing_organisation: create(:organisation), processing: true) create(:merge_request_organisation, merge_request:)