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 class MergeRequestsController < ApplicationController
before_action :authenticate_user! 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 def create
@merge_request = MergeRequest.create!(merge_request_params) @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 @merging_organisations_list = [@merge_request.requesting_organisation] + @merge_request.merging_organisations
end 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 def update_organisations
merge_request_organisation = MergeRequestOrganisation.new(merge_request_organisation_params) merge_request_organisation = MergeRequestOrganisation.new(merge_request_organisation_params)
@answer_options = organisations_answer_options @answer_options = organisations_answer_options
@ -26,14 +35,6 @@ class MergeRequestsController < ApplicationController
end end
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 def remove_merging_organisation
MergeRequestOrganisation.find_by(merge_request_organisation_params).destroy! MergeRequestOrganisation.find_by(merge_request_organisation_params).destroy!
@merge_request.reload @merge_request.reload
@ -56,7 +57,7 @@ private
def merge_request_params def merge_request_params
merge_params = params.fetch(:merge_request, {}).permit(:requesting_organisation_id, :other_merging_organisations) 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 merge_params[:requesting_organisation_id] = current_user.organisation.id
end end
@ -67,11 +68,19 @@ private
{ merge_request: @merge_request, merging_organisation_id: params[:merge_request][:merging_organisation] } { merge_request: @merge_request, merging_organisation_id: params[:merge_request][:merging_organisation] }
end end
def other_merging_organisaitions_params
params.fetch(:merge_request, {}).permit(:other_merging_organisations)
end
def find_resource def find_resource
@merge_request = MergeRequest.find(params[:merge_request_id]) @merge_request = MergeRequest.find(params[:merge_request_id])
end 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 end

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

@ -45,7 +45,7 @@
<% end %> <% end %>
<% end %> <% 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 %> <%= 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 %> <%= 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 %> <% end %>

2
config/routes.rb

@ -124,11 +124,9 @@ Rails.application.routes.draw do
end end
resources :merge_requests, path: "/merge-request" do resources :merge_requests, path: "/merge-request" do
post "merge-request", to: "merge_request#create_merge_request"
get "organisations", to: "merge_requests#organisations" get "organisations", to: "merge_requests#organisations"
patch "organisations", to: "merge_requests#update_organisations" patch "organisations", to: "merge_requests#update_organisations"
get "organisations/remove", to: "merge_requests#remove_merging_organisation" 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" get "absorbing-organisation", to: "merge_requests#absorbing_organisation"
end end

4
spec/requests/merge_requests_controller_spec.rb

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

Loading…
Cancel
Save