Browse Source

Add existing absorbing organisation page and field

pull/2600/head
Kat 2 years ago committed by kosiakkatrina
parent
commit
78bad539fd
  1. 8
      app/controllers/merge_requests_controller.rb
  2. 4
      app/helpers/merge_requests_helper.rb
  3. 24
      app/views/merge_requests/existing_absorbing_organisation.html.erb
  4. 2
      config/locales/en.yml
  5. 1
      config/routes.rb
  6. 5
      db/migrate/20240822080228_add_existing_absorbing_organisation_field.rb
  7. 3
      db/schema.rb
  8. 46
      spec/requests/merge_requests_controller_spec.rb

8
app/controllers/merge_requests_controller.rb

@ -6,6 +6,7 @@ class MergeRequestsController < ApplicationController
def absorbing_organisation; end def absorbing_organisation; end
def merge_date; end def merge_date; end
def existing_absorbing_organisation; end
def helpdesk_ticket; end def helpdesk_ticket; end
def merge_start_confirmation; end def merge_start_confirmation; end
def user_outcomes; end def user_outcomes; end
@ -86,6 +87,8 @@ private
when "merging_organisations" when "merging_organisations"
merge_date_merge_request_path(@merge_request) merge_date_merge_request_path(@merge_request)
when "merge_date" when "merge_date"
existing_absorbing_organisation_merge_request_path(@merge_request)
when "existing_absorbing_organisation"
helpdesk_ticket_merge_request_path(@merge_request) helpdesk_ticket_merge_request_path(@merge_request)
when "helpdesk_ticket" when "helpdesk_ticket"
merge_request_path(@merge_request) merge_request_path(@merge_request)
@ -115,6 +118,7 @@ private
:status, :status,
:absorbing_organisation_id, :absorbing_organisation_id,
:merge_date, :merge_date,
:existing_absorbing_organisation,
) )
merge_params[:requesting_organisation_id] = current_user.organisation.id merge_params[:requesting_organisation_id] = current_user.organisation.id
@ -140,6 +144,10 @@ private
else else
@merge_request.errors.add(:merge_date, :invalid) @merge_request.errors.add(:merge_date, :invalid)
end end
when "existing_absorbing_organisation"
if merge_request_params[:existing_absorbing_organisation].nil?
@merge_request.errors.add(:existing_absorbing_organisation, :blank)
end
end end
end end

4
app/helpers/merge_requests_helper.rb

@ -67,8 +67,10 @@ module MergeRequestsHelper
absorbing_organisation_merge_request_path(merge_request) absorbing_organisation_merge_request_path(merge_request)
when "merge_date" when "merge_date"
merging_organisations_merge_request_path(merge_request) merging_organisations_merge_request_path(merge_request)
when "helpdesk_ticket" when "existing_absorbing_organisation"
merge_date_merge_request_path(merge_request) merge_date_merge_request_path(merge_request)
when "helpdesk_ticket"
existing_absorbing_organisation_merge_request_path(merge_request)
end end
end end

24
app/views/merge_requests/existing_absorbing_organisation.html.erb

@ -0,0 +1,24 @@
<% content_for :before_content do %>
<% title = "Tell us if your organisation is merging" %>
<% content_for :title, title %>
<%= govuk_back_link href: merge_request_back_link(@merge_request, "existing_absorbing_organisation", request.query_parameters["referrer"]) %>
<% end %>
<div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds-from-desktop">
<%= form_with model: @merge_request, url: submit_merge_request_url(request.query_parameters["referrer"]), method: :patch do |f| %>
<%= f.govuk_error_summary %>
<%= f.govuk_radio_buttons_fieldset :existing_absorbing_organisation,
legend: { text: "Was #{@merge_request.absorbing_organisation&.name} already active before the merge date?", size: "l" } do %>
<%= f.govuk_radio_button :existing_absorbing_organisation,
"true",
label: { text: "Yes, this organisation existed before the merge" } %>
<%= f.govuk_radio_button :existing_absorbing_organisation,
"false",
label: { text: "No, it is a new organisation created by this merge" } %>
<% end %>
<%= f.hidden_field :page, value: "existing_absorbing_organisation" %>
<%= f.govuk_submit submit_merge_request_button_text(request.query_parameters["referrer"]) %>
<% end %>
</div>
</div>

2
config/locales/en.yml

@ -179,6 +179,8 @@ en:
merge_date: merge_date:
blank: "Enter a merge date" blank: "Enter a merge date"
invalid: "Enter a valid merge date" invalid: "Enter a valid merge date"
existing_absorbing_organisation:
blank: "You must answer absorbing organisation already active?"
notification: notification:
logs_deleted: logs_deleted:

1
config/routes.rb

@ -208,6 +208,7 @@ Rails.application.routes.draw do
get "merging-organisations/remove", to: "merge_requests#remove_merging_organisation" get "merging-organisations/remove", to: "merge_requests#remove_merging_organisation"
get "absorbing-organisation" get "absorbing-organisation"
get "merge-date" get "merge-date"
get "existing-absorbing-organisation"
get "helpdesk-ticket" get "helpdesk-ticket"
get "merge-start-confirmation" get "merge-start-confirmation"
get "user-outcomes" get "user-outcomes"

5
db/migrate/20240822080228_add_existing_absorbing_organisation_field.rb

@ -0,0 +1,5 @@
class AddExistingAbsorbingOrganisationField < ActiveRecord::Migration[7.0]
def change
add_column :merge_requests, :existing_absorbing_organisation, :boolean
end
end

3
db/schema.rb

@ -10,7 +10,7 @@
# #
# It's strongly recommended that you check this file into your version control system. # It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema[7.0].define(version: 2024_08_19_143150) do ActiveRecord::Schema[7.0].define(version: 2024_08_22_080228) do
# These are extensions that must be enabled in order to support this database # These are extensions that must be enabled in order to support this database
enable_extension "plpgsql" enable_extension "plpgsql"
@ -434,6 +434,7 @@ ActiveRecord::Schema[7.0].define(version: 2024_08_19_143150) do
t.datetime "last_failed_attempt" t.datetime "last_failed_attempt"
t.boolean "request_merged" t.boolean "request_merged"
t.boolean "processing" t.boolean "processing"
t.boolean "existing_absorbing_organisation"
end end
create_table "notifications", force: :cascade do |t| create_table "notifications", force: :cascade do |t|

46
spec/requests/merge_requests_controller_spec.rb

@ -219,6 +219,23 @@ RSpec.describe MergeRequestsController, type: :request do
end 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 describe "#helpdesk_ticket" do
context "when viewing helpdesk ticket page" do context "when viewing helpdesk ticket page" do
before do before do
@ -228,6 +245,8 @@ RSpec.describe MergeRequestsController, type: :request do
it "shows the correct content" do it "shows the correct content" do
expect(page).to have_content("Which helpdesk ticket reported this merge?") 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 end
end end
@ -365,10 +384,10 @@ RSpec.describe MergeRequestsController, type: :request do
patch "/merge-request/#{merge_request.id}", headers:, params: patch "/merge-request/#{merge_request.id}", headers:, params:
end end
it "redirects to helpdesk ticket path" do it "redirects to existing absorbing organisation path" do
request request
expect(response).to redirect_to(helpdesk_ticket_merge_request_path(merge_request)) expect(response).to redirect_to(existing_absorbing_organisation_merge_request_path(merge_request))
end end
it "updates merge_date" do it "updates merge_date" do
@ -400,6 +419,29 @@ RSpec.describe MergeRequestsController, type: :request do
end end
end 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 end
describe "#merge_start_confirmation" do describe "#merge_start_confirmation" do

Loading…
Cancel
Save