From 0d4a58007c700d66c8b2bac51e74abc127c622a5 Mon Sep 17 00:00:00 2001 From: Jack S Date: Wed, 26 Apr 2023 15:59:36 +0100 Subject: [PATCH] Handle unanswered question --- app/controllers/merge_requests_controller.rb | 8 ++++++++ .../merge_requests_controller_spec.rb | 20 +++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/app/controllers/merge_requests_controller.rb b/app/controllers/merge_requests_controller.rb index 649a63b83..809820c96 100644 --- a/app/controllers/merge_requests_controller.rb +++ b/app/controllers/merge_requests_controller.rb @@ -10,6 +10,7 @@ class MergeRequestsController < ApplicationController ] before_action :authenticate_user! before_action :authenticate_scope!, except: [:create] + before_action :validate_response, only: %i[update] def absorbing_organisation; end def confirm_telephone_number; end @@ -113,6 +114,13 @@ private merge_params end + def validate_response + if page == "absorbing_organisation" && merge_request_params[:absorbing_organisation_id].blank? && merge_request_params[:new_absorbing_organisation].blank? + @merge_request.errors.add(:absorbing_organisation_id, "Select an option") + render previous_template + end + end + def merge_request_organisation_params { merge_request: @merge_request, diff --git a/spec/requests/merge_requests_controller_spec.rb b/spec/requests/merge_requests_controller_spec.rb index 5d5ed5638..4c6bb7979 100644 --- a/spec/requests/merge_requests_controller_spec.rb +++ b/spec/requests/merge_requests_controller_spec.rb @@ -260,6 +260,26 @@ RSpec.describe MergeRequestsController, type: :request do end end + 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: "absorbing_organisation" } } + end + let(:request) do + patch "/merge-request/#{merge_request.id}", headers:, params: + end + + it "renders the error" do + request + + expect(page).to have_content("Select an option") + end + + it "does not update the request" do + expect { request }.not_to(change { merge_request.reload.attributes }) + end + end + context "when absorbing_organisation_id set to other" do let(:merge_request) { MergeRequest.create!(requesting_organisation: organisation, absorbing_organisation: other_organisation) } let(:params) do