Browse Source

Use generic update method

pull/1535/head
Kat 3 years ago
parent
commit
1456885ca8
  1. 37
      app/controllers/merge_requests_controller.rb
  2. 2
      app/views/merge_requests/organisations.html.erb
  3. 2
      config/routes.rb
  4. 4
      spec/requests/merge_requests_controller_spec.rb

37
app/controllers/merge_requests_controller.rb

@ -1,6 +1,7 @@
class MergeRequestsController < ApplicationController
before_action :authenticate_user!
before_action :find_resource, only: %i[organisations update_organisations remove_merging_organisation update_other_merging_organisations]
before_action :find_resource, only: %i[organisations update_organisations remove_merging_organisation]
before_action :find_resource_by_id, only: %i[update]
def create
@merge_request = MergeRequest.create!(merge_request_params)
@ -13,6 +14,14 @@ class MergeRequestsController < ApplicationController
@merging_organisations_list = [@merge_request.requesting_organisation] + @merge_request.merging_organisations
end
def update
if @merge_request.update(merge_request_params)
redirect_to next_page_path
else
render previous_template, status: :unprocessable_entity
end
end
def update_organisations
merge_request_organisation = MergeRequestOrganisation.new(merge_request_organisation_params)
@answer_options = organisations_answer_options
@ -26,14 +35,6 @@ class MergeRequestsController < ApplicationController
end
end
def update_other_merging_organisations
if @merge_request.update(other_merging_organisaitions_params)
redirect_to merge_request_absorbing_organisation_path(@merge_request)
else
render :organisations, status: :unprocessable_entity
end
end
def remove_merging_organisation
MergeRequestOrganisation.find_by(merge_request_organisation_params).destroy!
@merge_request.reload
@ -56,7 +57,7 @@ private
def merge_request_params
merge_params = params.fetch(:merge_request, {}).permit(:requesting_organisation_id, :other_merging_organisations)
if current_user.data_coordinator? || current_user.data_provider?
if merge_params[:requesting_organisation_id].present? && (current_user.data_coordinator? || current_user.data_provider?)
merge_params[:requesting_organisation_id] = current_user.organisation.id
end
@ -67,11 +68,19 @@ private
{ merge_request: @merge_request, merging_organisation_id: params[:merge_request][:merging_organisation] }
end
def other_merging_organisaitions_params
params.fetch(:merge_request, {}).permit(:other_merging_organisations)
end
def find_resource
@merge_request = MergeRequest.find(params[:merge_request_id])
end
def find_resource_by_id
@merge_request = MergeRequest.find(params[:id])
end
def next_page_path
merge_request_absorbing_organisation_path(@merge_request)
end
def previous_template
:organisations
end
end

2
app/views/merge_requests/organisations.html.erb

@ -45,7 +45,7 @@
<% end %>
<% end %>
<% end %>
<%= form_with model: @merge_request, url: merge_request_other_merging_organisations_path, method: :patch do |f| %>
<%= form_with model: @merge_request, url: merge_request_path(id: @merge_request.id), method: :patch do |f| %>
<%= govuk_details(summary_text: "Can't find the managing agent you're looking for?") do %>
<%= f.govuk_text_area :other_merging_organisations, label: { text: "Other organisations" }, hint: { text: "List other organisations that are part of the merge but not registered on CORE." }, rows: 9 %>
<% end %>

2
config/routes.rb

@ -124,11 +124,9 @@ Rails.application.routes.draw do
end
resources :merge_requests, path: "/merge-request" do
post "merge-request", to: "merge_request#create_merge_request"
get "organisations", to: "merge_requests#organisations"
patch "organisations", to: "merge_requests#update_organisations"
get "organisations/remove", to: "merge_requests#remove_merging_organisation"
patch "other-merging-organisations", to: "merge_requests#update_other_merging_organisations"
get "absorbing-organisation", to: "merge_requests#absorbing_organisation"
end

4
spec/requests/merge_requests_controller_spec.rb

@ -15,7 +15,7 @@ RSpec.describe MergeRequestsController, type: :request do
end
describe "#organisations" do
let(:params) { {} }
let(:params) { { merge_request: { requesting_organisation_id: "9" } } }
before do
organisation.update!(name: "Test Org")
@ -159,7 +159,7 @@ RSpec.describe MergeRequestsController, type: :request do
context "when adding other merging organisations" do
before do
MergeRequestOrganisation.create!(merge_request_id: merge_request.id, merging_organisation_id: other_organisation.id)
patch "/merge-request/#{merge_request.id}/other-merging-organisations", headers:, params:
patch "/merge-request/#{merge_request.id}", headers:, params:
end
it "updates the merge request" do

Loading…
Cancel
Save