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