From 9ab2d2054cf6cb116e5fd11bd4d53feddd1355e8 Mon Sep 17 00:00:00 2001
From: natdeanlewissoftwire
<94526761+natdeanlewissoftwire@users.noreply.github.com>
Date: Fri, 12 May 2023 11:03:54 +0100
Subject: [PATCH] CLDC-2082 Add merge orgs new phone number page (#1619)
* feat: add new telephone page with failing error tests
* feat: update tests
* refactor: lint
* feat: remove skip link
---
app/controllers/merge_requests_controller.rb | 7 ++
...new_organisation_telephone_number.html.erb | 15 ++++
.../new_organisation_type.html.erb | 5 ++
config/locales/en.yml | 3 +-
config/routes.rb | 1 +
...ation_telephone_number_to_merge_request.rb | 5 ++
db/schema.rb | 3 +-
.../merge_requests_controller_spec.rb | 68 +++++++++++++++++--
8 files changed, 100 insertions(+), 7 deletions(-)
create mode 100644 app/views/merge_requests/new_organisation_type.html.erb
create mode 100644 db/migrate/20230505105327_add_new_organisation_telephone_number_to_merge_request.rb
diff --git a/app/controllers/merge_requests_controller.rb b/app/controllers/merge_requests_controller.rb
index da7b9ae75..d717f6ee7 100644
--- a/app/controllers/merge_requests_controller.rb
+++ b/app/controllers/merge_requests_controller.rb
@@ -9,6 +9,7 @@ class MergeRequestsController < ApplicationController
new_organisation_name
new_organisation_address
new_organisation_telephone_number
+ new_organisation_type
merge_date
]
before_action :authenticate_user!
@@ -19,6 +20,7 @@ class MergeRequestsController < ApplicationController
def new_organisation_name; end
def new_organisation_address; end
def new_organisation_telephone_number; end
+ def new_organisation_type; end
def merge_date; end
def create
@@ -83,6 +85,8 @@ private
new_organisation_address_merge_request_path(@merge_request)
when "new_organisation_address"
new_organisation_telephone_number_merge_request_path(@merge_request)
+ when "new_organisation_telephone_number"
+ new_organisation_type_merge_request_path(@merge_request)
end
end
@@ -115,6 +119,7 @@ private
:new_organisation_address_line1,
:new_organisation_address_line2,
:new_organisation_postcode,
+ :new_organisation_telephone_number,
)
if merge_params[:requesting_organisation_id].present? && (current_user.data_coordinator? || current_user.data_provider?)
@@ -150,6 +155,8 @@ private
end
when "new_organisation_name"
@merge_request.errors.add(:new_organisation_name, :blank) if merge_request_params[:new_organisation_name].blank?
+ when "new_organisation_telephone_number"
+ @merge_request.errors.add(:new_organisation_telephone_number, :blank) if merge_request_params[:new_organisation_telephone_number].blank?
end
end
diff --git a/app/views/merge_requests/new_organisation_telephone_number.html.erb b/app/views/merge_requests/new_organisation_telephone_number.html.erb
index 059ca752d..6c0c1d81e 100644
--- a/app/views/merge_requests/new_organisation_telephone_number.html.erb
+++ b/app/views/merge_requests/new_organisation_telephone_number.html.erb
@@ -3,3 +3,18 @@
<% content_for :title, title %>
<%= govuk_back_link href: new_organisation_address_merge_request_path(@merge_request) %>
<% end %>
+
+<%= form_with model: @merge_request, url: merge_request_path, method: :patch do |f| %>
+ <%= f.govuk_error_summary %>
+
+
What is <%= @merge_request.new_organisation_name.possessive %> telephone number?
+
+
+ <%= f.govuk_text_field :new_organisation_telephone_number, label: nil, width: "two-thirds" %>
+ <%= f.hidden_field :page, value: "new_organisation_telephone_number" %>
+
+ <%= f.govuk_submit %>
+
+
+
+<% end %>
diff --git a/app/views/merge_requests/new_organisation_type.html.erb b/app/views/merge_requests/new_organisation_type.html.erb
new file mode 100644
index 000000000..2e22071e7
--- /dev/null
+++ b/app/views/merge_requests/new_organisation_type.html.erb
@@ -0,0 +1,5 @@
+<% content_for :before_content do %>
+ <% title = "New organisation type" %>
+ <% content_for :title, title %>
+ <%= govuk_back_link href: new_organisation_telephone_number_merge_request_path(@merge_request) %>
+<% end %>
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 8e7eb6e14..a485f335f 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -135,7 +135,8 @@ en:
new_organisation_name:
blank: "Enter an organisation name"
invalid: "An organisation with this name already exists"
-
+ new_organisation_telephone_number:
+ blank: "Enter a valid telephone number"
validations:
diff --git a/config/routes.rb b/config/routes.rb
index e815b5137..07090f073 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -144,6 +144,7 @@ Rails.application.routes.draw do
get "new-organisation-name"
get "new-organisation-address"
get "new-organisation-telephone-number"
+ get "new-organisation-type"
get "merge-date"
end
end
diff --git a/db/migrate/20230505105327_add_new_organisation_telephone_number_to_merge_request.rb b/db/migrate/20230505105327_add_new_organisation_telephone_number_to_merge_request.rb
new file mode 100644
index 000000000..cb8e4cb53
--- /dev/null
+++ b/db/migrate/20230505105327_add_new_organisation_telephone_number_to_merge_request.rb
@@ -0,0 +1,5 @@
+class AddNewOrganisationTelephoneNumberToMergeRequest < ActiveRecord::Migration[7.0]
+ def change
+ add_column :merge_requests, :new_organisation_telephone_number, :string
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index b75324351..adcf57aab 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema[7.0].define(version: 2023_05_04_111352) do
+ActiveRecord::Schema[7.0].define(version: 2023_05_05_105327) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -375,6 +375,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_05_04_111352) do
t.string "new_organisation_address_line1"
t.string "new_organisation_address_line2"
t.string "new_organisation_postcode"
+ t.string "new_organisation_telephone_number"
end
create_table "organisation_relationships", force: :cascade do |t|
diff --git a/spec/requests/merge_requests_controller_spec.rb b/spec/requests/merge_requests_controller_spec.rb
index b8bc22d55..6f7b64f16 100644
--- a/spec/requests/merge_requests_controller_spec.rb
+++ b/spec/requests/merge_requests_controller_spec.rb
@@ -473,7 +473,7 @@ RSpec.describe MergeRequestsController, type: :request do
end
end
- describe "#new_organsation_name" do
+ describe "#new_organisation_name" do
let(:merge_request) { MergeRequest.create!(requesting_organisation: organisation, new_absorbing_organisation: true) }
context "when viewing the new organisation name page" do
@@ -554,7 +554,7 @@ RSpec.describe MergeRequestsController, type: :request do
end
end
- describe "#new_organsation_address" do
+ describe "#new_organisation_address" do
let(:merge_request) { MergeRequest.create!(requesting_organisation: organisation, new_organisation_name: "New name", new_absorbing_organisation: true) }
context "when viewing the new organisation name page" do
@@ -594,19 +594,19 @@ RSpec.describe MergeRequestsController, type: :request do
expect(response).to redirect_to(new_organisation_telephone_number_merge_request_path(merge_request))
end
- it "updates new organisation address line 1 to correct addess line" do
+ it "updates new organisation address line 1 to correct address line" do
expect { request }.to change {
merge_request.reload.new_organisation_address_line1
}.from(nil).to("first address line")
end
- it "updates new organisation address line 2 to correct addess line" do
+ it "updates new organisation address line 2 to correct address line" do
expect { request }.to change {
merge_request.reload.new_organisation_address_line2
}.from(nil).to("second address line")
end
- it "updates new organisation postcode to correct addess line" do
+ it "updates new organisation postcode to correct address line" do
expect { request }.to change {
merge_request.reload.new_organisation_postcode
}.from(nil).to("new postcode")
@@ -633,6 +633,64 @@ RSpec.describe MergeRequestsController, type: :request do
end
end
end
+
+ describe "#new_organisation_telephone_number" do
+ let(:merge_request) { MergeRequest.create!(requesting_organisation: organisation, new_organisation_name: "New name", new_absorbing_organisation: true) }
+
+ context "when viewing the new organisation telephone number page" do
+ before do
+ get "/merge-request/#{merge_request.id}/new-organisation-telephone-number", headers:
+ end
+
+ it "displays the correct question" do
+ expect(page).to have_content("What is New name’s telephone number?")
+ end
+
+ it "has the correct back button" do
+ expect(page).to have_link("Back", href: new_organisation_address_merge_request_path(merge_request))
+ end
+ end
+
+ context "when updating the new organisation telephone number" do
+ let(:params) do
+ { merge_request: { new_organisation_telephone_number: "1234", page: "new_organisation_telephone_number" } }
+ end
+
+ let(:request) do
+ patch "/merge-request/#{merge_request.id}", headers:, params:
+ end
+
+ it "redirects to new organisation type path" do
+ request
+ expect(response).to redirect_to(new_organisation_type_merge_request_path(merge_request))
+ end
+
+ it "updates new organisation name to the correct telephone number" do
+ expect { request }.to change {
+ merge_request.reload.new_organisation_telephone_number
+ }.from(nil).to("1234")
+ end
+ end
+
+ context "when the new organisation telephone number is not answered" do
+ let(:params) do
+ { merge_request: { new_organisation_telephone_number: nil, page: "new_organisation_telephone_number" } }
+ end
+
+ let(:request) do
+ patch "/merge-request/#{merge_request.id}", headers:, params:
+ end
+
+ it "renders the error" do
+ request
+ expect(page).to have_content("Enter a valid telephone number")
+ end
+
+ it "does not update the organisation telephone number" do
+ expect { request }.not_to(change { merge_request.reload.attributes })
+ end
+ end
+ end
end
end