From d800999e22d9da85c9ab18a2be60ff954bf18728 Mon Sep 17 00:00:00 2001 From: kosiakkatrina <54268893+kosiakkatrina@users.noreply.github.com> Date: Thu, 22 Aug 2024 16:17:27 +0100 Subject: [PATCH] Add merge start confirmation page (#2601) --- app/controllers/merge_requests_controller.rb | 1 + .../merge_start_confirmation.html.erb | 27 +++++++++++++++++++ app/views/merge_requests/show.html.erb | 4 +-- config/routes.rb | 1 + .../merge_requests_controller_spec.rb | 17 ++++++++++++ 5 files changed, 47 insertions(+), 3 deletions(-) create mode 100644 app/views/merge_requests/merge_start_confirmation.html.erb diff --git a/app/controllers/merge_requests_controller.rb b/app/controllers/merge_requests_controller.rb index 5860c34a4..9abfff032 100644 --- a/app/controllers/merge_requests_controller.rb +++ b/app/controllers/merge_requests_controller.rb @@ -7,6 +7,7 @@ class MergeRequestsController < ApplicationController def absorbing_organisation; end def merge_date; end def helpdesk_ticket; end + def merge_start_confirmation; end def create ActiveRecord::Base.transaction do diff --git a/app/views/merge_requests/merge_start_confirmation.html.erb b/app/views/merge_requests/merge_start_confirmation.html.erb new file mode 100644 index 000000000..c85223f3a --- /dev/null +++ b/app/views/merge_requests/merge_start_confirmation.html.erb @@ -0,0 +1,27 @@ +<% content_for :before_content do %> + <% content_for :title, "Are you sure you want to begin this merge?" %> + <%= govuk_back_link href: merge_request_path(@merge_request) %> +<% end %> + +
+
+

+ <%= content_for(:title) %> +

+ + <%= govuk_warning_text(text: "You will not be able to undo this action.") %> + +
+ <%= govuk_button_to( + "Begin merge", + start_merge_merge_request_path(@merge_request), + method: :patch, + ) %> + <%= govuk_button_link_to( + "Cancel", + merge_request_path(@merge_request), + secondary: true, + ) %> +
+
+
diff --git a/app/views/merge_requests/show.html.erb b/app/views/merge_requests/show.html.erb index 26ad1dd23..0fbde7621 100644 --- a/app/views/merge_requests/show.html.erb +++ b/app/views/merge_requests/show.html.erb @@ -12,9 +12,7 @@ <% unless @merge_request.status == "request_merged" || @merge_request.status == "processing" %>
- <%= form_with model: @merge_request, url: start_merge_merge_request_path(@merge_request) do |f| %> - <%= f.govuk_submit "Begin merge", disabled: @merge_request.status != "ready_to_merge" %> - <% end %> + <%= govuk_button_link_to "Begin merge", merge_start_confirmation_merge_request_path(@merge_request), disabled: @merge_request.status != "ready_to_merge" %> <%= govuk_button_link_to "Delete merge request", delete_confirmation_merge_request_path(@merge_request), warning: true %>
<% end %> diff --git a/config/routes.rb b/config/routes.rb index edd9d75a6..96d738062 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -209,6 +209,7 @@ Rails.application.routes.draw do get "absorbing-organisation" get "merge-date" get "helpdesk-ticket" + get "merge-start-confirmation" get "delete-confirmation", to: "merge_requests#delete_confirmation" delete "delete", to: "merge_requests#delete" patch "start-merge", to: "merge_requests#start_merge" diff --git a/spec/requests/merge_requests_controller_spec.rb b/spec/requests/merge_requests_controller_spec.rb index 75d09fb76..0c84b3c95 100644 --- a/spec/requests/merge_requests_controller_spec.rb +++ b/spec/requests/merge_requests_controller_spec.rb @@ -402,6 +402,19 @@ RSpec.describe MergeRequestsController, type: :request do 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)) } let(:merging_organisation) { create(:organisation, name: "Merging Test Org") } @@ -456,6 +469,10 @@ RSpec.describe MergeRequestsController, type: :request do 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 end end