diff --git a/app/controllers/merge_requests_controller.rb b/app/controllers/merge_requests_controller.rb
index 17959e264..da7b9ae75 100644
--- a/app/controllers/merge_requests_controller.rb
+++ b/app/controllers/merge_requests_controller.rb
@@ -8,6 +8,7 @@ class MergeRequestsController < ApplicationController
confirm_telephone_number
new_organisation_name
new_organisation_address
+ new_organisation_telephone_number
merge_date
]
before_action :authenticate_user!
@@ -17,6 +18,7 @@ class MergeRequestsController < ApplicationController
def confirm_telephone_number; end
def new_organisation_name; end
def new_organisation_address; end
+ def new_organisation_telephone_number; end
def merge_date; end
def create
@@ -79,6 +81,8 @@ private
merge_date_merge_request_path(@merge_request)
when "new_organisation_name"
new_organisation_address_merge_request_path(@merge_request)
+ when "new_organisation_address"
+ new_organisation_telephone_number_merge_request_path(@merge_request)
end
end
@@ -108,6 +112,9 @@ private
:telephone_number_correct,
:new_telephone_number,
:new_organisation_name,
+ :new_organisation_address_line1,
+ :new_organisation_address_line2,
+ :new_organisation_postcode,
)
if merge_params[:requesting_organisation_id].present? && (current_user.data_coordinator? || current_user.data_provider?)
diff --git a/app/views/merge_requests/new_organisation_address.html.erb b/app/views/merge_requests/new_organisation_address.html.erb
index 32dc57c86..7dd331507 100644
--- a/app/views/merge_requests/new_organisation_address.html.erb
+++ b/app/views/merge_requests/new_organisation_address.html.erb
@@ -1,5 +1,33 @@
<% content_for :before_content do %>
<% title = "New organisation address" %>
<% content_for :title, title %>
- <%= govuk_back_link href: new_organisation_name_merge_request_path(id: @merge_request) %>
+ <%= govuk_back_link href: new_organisation_name_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 %> address?
+
+
+ <%= f.govuk_text_field :new_organisation_address_line1,
+ label: { text: "Address line 1", size: "m" },
+ autocomplete: "address-line1" %>
+
+ <%= f.govuk_text_field :new_organisation_address_line2,
+ label: { text: "Address line 2", size: "m" },
+ autocomplete: "address-line2" %>
+
+ <%= f.govuk_text_field :new_organisation_postcode,
+ label: { text: "Postcode", size: "m" },
+ autocomplete: "postal-code",
+ width: 10 %>
+
+ <%= f.hidden_field :page, value: "new_organisation_address" %>
+
+ <%= f.govuk_submit %>
+ <%= govuk_link_to("Skip for now", new_organisation_telephone_number_merge_request_path(@merge_request)) %>
+
+
+
<% 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
new file mode 100644
index 000000000..059ca752d
--- /dev/null
+++ b/app/views/merge_requests/new_organisation_telephone_number.html.erb
@@ -0,0 +1,5 @@
+<% content_for :before_content do %>
+ <% title = "New organisation telephone number" %>
+ <% content_for :title, title %>
+ <%= govuk_back_link href: new_organisation_address_merge_request_path(@merge_request) %>
+<% end %>
diff --git a/config/routes.rb b/config/routes.rb
index 48afc3357..359e7e121 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -140,6 +140,7 @@ Rails.application.routes.draw do
get "confirm-telephone-number"
get "new-organisation-name"
get "new-organisation-address"
+ get "new-organisation-telephone-number"
get "merge-date"
end
end
diff --git a/db/migrate/20230504111352_add_new_organisation_address.rb b/db/migrate/20230504111352_add_new_organisation_address.rb
new file mode 100644
index 000000000..9b10decba
--- /dev/null
+++ b/db/migrate/20230504111352_add_new_organisation_address.rb
@@ -0,0 +1,9 @@
+class AddNewOrganisationAddress < ActiveRecord::Migration[7.0]
+ def change
+ change_table :merge_requests, bulk: true do |t|
+ t.column :new_organisation_address_line1, :string
+ t.column :new_organisation_address_line2, :string
+ t.column :new_organisation_postcode, :string
+ end
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index cbe185ed4..b75324351 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_02_135049) do
+ActiveRecord::Schema[7.0].define(version: 2023_05_04_111352) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -372,6 +372,9 @@ ActiveRecord::Schema[7.0].define(version: 2023_05_02_135049) do
t.boolean "telephone_number_correct"
t.string "new_telephone_number"
t.string "new_organisation_name"
+ t.string "new_organisation_address_line1"
+ t.string "new_organisation_address_line2"
+ t.string "new_organisation_postcode"
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 3ffe1fe13..b8bc22d55 100644
--- a/spec/requests/merge_requests_controller_spec.rb
+++ b/spec/requests/merge_requests_controller_spec.rb
@@ -553,6 +553,86 @@ RSpec.describe MergeRequestsController, type: :request do
end
end
end
+
+ describe "#new_organsation_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
+ before do
+ get "/merge-request/#{merge_request.id}/new-organisation-address", headers:
+ end
+
+ it "displays the correct question" do
+ expect(page).to have_content("What is New name’s address?")
+ end
+
+ it "has the correct back button" do
+ expect(page).to have_link("Back", href: new_organisation_name_merge_request_path(merge_request))
+ end
+
+ it "has a skip link" do
+ expect(page).to have_link("Skip for now", href: new_organisation_telephone_number_merge_request_path(merge_request))
+ end
+ end
+
+ context "when updating the new organisation address" do
+ let(:params) do
+ { merge_request: {
+ new_organisation_address_line1: "first address line",
+ new_organisation_address_line2: "second address line",
+ new_organisation_postcode: "new postcode",
+ page: "new_organisation_address",
+ } }
+ end
+
+ let(:request) do
+ patch "/merge-request/#{merge_request.id}", headers:, params:
+ end
+
+ it "redirects to new organisation telephone path" do
+ request
+ 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
+ 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
+ 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
+ expect { request }.to change {
+ merge_request.reload.new_organisation_postcode
+ }.from(nil).to("new postcode")
+ end
+ end
+
+ context "when address is not provided" do
+ let(:params) do
+ { merge_request: {
+ new_organisation_address_line1: nil,
+ new_organisation_address_line2: nil,
+ new_organisation_postcode: nil,
+ page: "new_organisation_address",
+ } }
+ end
+
+ let(:request) do
+ patch "/merge-request/#{merge_request.id}", headers:, params:
+ end
+
+ it "does not throw an error" do
+ request
+ expect(response).to redirect_to(new_organisation_telephone_number_merge_request_path(merge_request))
+ end
+ end
+ end
end
end