Browse Source

Extract some validations to the model

pull/1598/head
Kat 3 years ago
parent
commit
0985b36e9b
  1. 5
      app/controllers/merge_requests_controller.rb
  2. 8
      app/models/merge_request.rb
  3. 4
      app/views/merge_requests/confirm_telephone_number.html.erb
  4. 6
      spec/requests/merge_requests_controller_spec.rb

5
app/controllers/merge_requests_controller.rb

@ -123,7 +123,7 @@ private
end
end
if merge_params[:telephone_number_correct] == "1"
if merge_params[:telephone_number_correct] == "true"
merge_params[:new_telephone_number] = nil
end
@ -143,12 +143,9 @@ private
else
@merge_request.errors.add(:telephone_number_correct, :invalid)
end
elsif merge_request_params[:telephone_number_correct] == "0" && merge_request_params[:new_telephone_number].blank?
@merge_request.errors.add(:new_telephone_number, :blank)
end
when "new_organisation_name"
@merge_request.errors.add(:new_organisation_name, :blank) if merge_request_params[:new_organisation_name].blank?
@merge_request.errors.add(:new_organisation_name, :invalid) if Organisation.where("lower(name) = ?", merge_request_params[:new_organisation_name]&.downcase).exists?
end
end

8
app/models/merge_request.rb

@ -3,10 +3,18 @@ class MergeRequest < ApplicationRecord
has_many :merge_request_organisations
belongs_to :absorbing_organisation, class_name: "Organisation", optional: true
has_many :merging_organisations, through: :merge_request_organisations, source: :merging_organisation
validate :organisation_name_uniqueness, if: :new_organisation_name
validates :new_telephone_number, presence: true, if: -> { telephone_number_correct == false }
STATUS = {
"unsubmitted" => 0,
"submitted" => 1,
}.freeze
enum status: STATUS
def organisation_name_uniqueness
if Organisation.where("lower(name) = ?", new_organisation_name&.downcase).exists?
errors.add(:new_organisation_name, :invalid)
end
end
end

4
app/views/merge_requests/confirm_telephone_number.html.erb

@ -20,8 +20,8 @@
<% if @merge_request.absorbing_organisation.phone.present? %>
<%= f.govuk_radio_buttons_fieldset(:telephone_number_correct, legend: nil) do %>
<%= f.govuk_radio_button :telephone_number_correct, 1, checked: @merge_request.telephone_number_correct?, label: { text: "This telephone number is correct" }, link_errors: true %>
<%= f.govuk_radio_button :telephone_number_correct, 0, checked: @merge_request.new_telephone_number.present?, label: { text: "Enter a new phone number" } do %>
<%= f.govuk_radio_button :telephone_number_correct, true, checked: @merge_request.telephone_number_correct?, label: { text: "This telephone number is correct" }, link_errors: true %>
<%= f.govuk_radio_button :telephone_number_correct, false, checked: @merge_request.new_telephone_number.present?, label: { text: "Enter a new phone number" } do %>
<%= f.govuk_text_field :new_telephone_number, label: { text: "Telephone number" }, width: "two-thirds" %>
<% end %>
<%= f.hidden_field :page, value: "confirm_telephone_number" %>

6
spec/requests/merge_requests_controller_spec.rb

@ -367,7 +367,7 @@ RSpec.describe MergeRequestsController, type: :request do
context "when confirming the number" do
let(:merge_request) { MergeRequest.create!(requesting_organisation: organisation, new_absorbing_organisation: true, new_telephone_number: "123") }
let(:params) do
{ merge_request: { telephone_number_correct: "1", page: "confirm_telephone_number" } }
{ merge_request: { telephone_number_correct: true, page: "confirm_telephone_number" } }
end
let(:request) do
@ -392,7 +392,7 @@ RSpec.describe MergeRequestsController, type: :request do
context "when setting new number" do
let(:merge_request) { MergeRequest.create!(requesting_organisation: organisation, new_absorbing_organisation: true) }
let(:params) do
{ merge_request: { telephone_number_correct: "0", new_telephone_number: "123", page: "confirm_telephone_number" } }
{ merge_request: { telephone_number_correct: false, new_telephone_number: "123", page: "confirm_telephone_number" } }
end
let(:request) do
@ -455,7 +455,7 @@ RSpec.describe MergeRequestsController, type: :request do
context "when not answering the phone number" do
let(:merge_request) { MergeRequest.create!(requesting_organisation: organisation, absorbing_organisation: other_organisation) }
let(:params) do
{ merge_request: { page: "confirm_telephone_number", telephone_number_correct: "0" } }
{ merge_request: { page: "confirm_telephone_number", telephone_number_correct: false } }
end
let(:request) do
patch "/merge-request/#{merge_request.id}", headers:, params:

Loading…
Cancel
Save