diff --git a/app/controllers/merge_requests_controller.rb b/app/controllers/merge_requests_controller.rb index 453fcfe72..b3b396902 100644 --- a/app/controllers/merge_requests_controller.rb +++ b/app/controllers/merge_requests_controller.rb @@ -150,6 +150,8 @@ private when "new_organisation_name" if merge_request_params[:new_organisation_name].blank? @merge_request.errors.add(:new_organisation_name, I18n.t("validations.merge_request.new_organisation_name_blank")) + elsif Organisation.where("lower(name) = ?", merge_request_params[:new_organisation_name].downcase).exists? + @merge_request.errors.add(:new_organisation_name, I18n.t("validations.merge_request.new_organisation_name_exists")) end end end diff --git a/config/locales/en.yml b/config/locales/en.yml index 09ac55f95..cab66742e 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -519,6 +519,7 @@ en: telephone_number_correct_blank: Select to confirm or enter a new telephone number new_telephone_number_blank: Enter a valid telephone number new_organisation_name_blank: "Enter an organisation name" + new_organisation_name_exists: "An organisation with this name already exists" soft_validations: net_income: diff --git a/spec/requests/merge_requests_controller_spec.rb b/spec/requests/merge_requests_controller_spec.rb index 4f5df0d19..935ee1210 100644 --- a/spec/requests/merge_requests_controller_spec.rb +++ b/spec/requests/merge_requests_controller_spec.rb @@ -529,6 +529,29 @@ RSpec.describe MergeRequestsController, type: :request do expect { request }.not_to(change { merge_request.reload.attributes }) end end + + context "when the new organisation name already exists" do + before do + create(:organisation, name: "new org name") + end + + let(:params) do + { merge_request: { new_organisation_name: "New org name", page: "new_organisation_name" } } + end + + let(:request) do + patch "/merge-request/#{merge_request.id}", headers:, params: + end + + it "renders the error" do + request + expect(page).to have_content("An organisation with this name already exists") + end + + it "does not update the organisation name" do + expect { request }.not_to(change { merge_request.reload.attributes }) + end + end end end end