Browse Source

CLDC-3586 Update merge date merge request question (#2571)

* Remove unused paths and update merge date

* lint
pull/2620/head
kosiakkatrina 2 years ago
parent
commit
804fc45bc7
  1. 66
      app/controllers/merge_requests_controller.rb
  2. 8
      app/models/merge_request.rb
  3. 41
      app/views/merge_requests/confirm_telephone_number.html.erb
  4. 5
      app/views/merge_requests/helpdesk_ticket.html.erb
  5. 22
      app/views/merge_requests/merge_date.html.erb
  6. 33
      app/views/merge_requests/new_organisation_address.html.erb
  7. 19
      app/views/merge_requests/new_organisation_name.html.erb
  8. 20
      app/views/merge_requests/new_organisation_telephone_number.html.erb
  9. 5
      app/views/merge_requests/new_organisation_type.html.erb
  10. 13
      config/locales/en.yml
  11. 6
      config/routes.rb
  12. 27
      db/migrate/20240813112119_remove_new_org_merge_request_fields.rb
  13. 8
      db/schema.rb
  14. 383
      spec/requests/merge_requests_controller_spec.rb

66
app/controllers/merge_requests_controller.rb

@ -6,12 +6,8 @@ class MergeRequestsController < ApplicationController
def absorbing_organisation; end
def merging_organisations; end
def confirm_telephone_number; end
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 helpdesk_ticket; end
def create
ActiveRecord::Base.transaction do
@ -59,19 +55,9 @@ private
when "absorbing_organisation"
merging_organisations_merge_request_path(@merge_request)
when "merging_organisations"
if create_new_organisation?
new_organisation_name_merge_request_path(@merge_request)
else
confirm_telephone_number_merge_request_path(@merge_request)
end
when "confirm_telephone_number"
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)
when "new_organisation_telephone_number"
new_organisation_type_merge_request_path(@merge_request)
when "merge_date"
helpdesk_ticket_merge_request_path(@merge_request)
end
end
@ -79,10 +65,6 @@ private
page
end
def create_new_organisation?
params.dig(:merge_request, :absorbing_organisation_id) == "other"
end
def set_organisations_answer_options
answer_options = { "" => "Select an option" }
@ -100,48 +82,32 @@ private
:requesting_organisation_id,
:status,
:absorbing_organisation_id,
:telephone_number_correct,
:new_telephone_number,
:new_organisation_name,
:new_organisation_address_line1,
:new_organisation_address_line2,
:new_organisation_postcode,
:new_organisation_telephone_number,
:merge_date,
)
merge_params[:requesting_organisation_id] = current_user.organisation.id
if merge_params[:absorbing_organisation_id].present?
if create_new_organisation?
merge_params[:new_absorbing_organisation] = true
merge_params[:absorbing_organisation_id] = nil
else
merge_params[:new_absorbing_organisation] = false
end
end
if merge_params[:telephone_number_correct] == "true"
merge_params[:new_telephone_number] = nil
end
merge_params
end
def validate_response
case page
when "absorbing_organisation"
if merge_request_params[:absorbing_organisation_id].blank? && merge_request_params[:new_absorbing_organisation].blank?
if merge_request_params[:absorbing_organisation_id].blank?
@merge_request.errors.add(:absorbing_organisation_id, :blank)
end
when "confirm_telephone_number"
if merge_request_params[:telephone_number_correct].blank?
@merge_request.errors.add(:telephone_number_correct, :blank) if @merge_request.absorbing_organisation.phone.present?
@merge_request.errors.add(:new_telephone_number, :blank) if @merge_request.absorbing_organisation.phone.blank?
when "merge_date"
day = merge_request_params["merge_date(3i)"]
month = merge_request_params["merge_date(2i)"]
year = merge_request_params["merge_date(1i)"]
return @merge_request.errors.add(:merge_date, :blank) if [day, month, year].all?(&:blank?)
if [day, month, year].none?(&:blank?) && Date.valid_date?(year.to_i, month.to_i, day.to_i)
merge_request_params["merge_date"] = Time.zone.local(year.to_i, month.to_i, day.to_i)
else
@merge_request.errors.add(:merge_date, :invalid)
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

8
app/models/merge_request.rb

@ -4,8 +4,6 @@ class MergeRequest < ApplicationRecord
belongs_to :absorbing_organisation, class_name: "Organisation", optional: true
has_many :merging_organisations, through: :merge_request_organisations, source: :merging_organisation
belongs_to :requester, class_name: "User", optional: true
validate :organisation_name_uniqueness, if: :new_organisation_name
validates :new_telephone_number, presence: true, if: -> { telephone_number_correct == false }
STATUS = {
"merge_issues" => 0,
@ -23,12 +21,6 @@ class MergeRequest < ApplicationRecord
merged.where("merge_requests.merge_date >= ?", open_collection_period_start_date).or(not_merged)
}
def organisation_name_uniqueness
if Organisation.where("lower(name) = ?", new_organisation_name&.downcase).exists?
errors.add(:new_organisation_name, :invalid)
end
end
def absorbing_organisation_name
absorbing_organisation&.name || ""
end

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

@ -1,41 +0,0 @@
<% content_for :before_content do %>
<% title = "Tell us if your organisation is merging" %>
<% content_for :title, title %>
<%= govuk_back_link href: absorbing_organisation_merge_request_path(id: @merge_request) %>
<% end %>
<%= form_with model: @merge_request, url: merge_request_path, method: :patch do |f| %>
<%= f.govuk_error_summary %>
<h2 class="govuk-heading-l">What is <%= @merge_request.absorbing_organisation.name %>'s telephone number?</h2>
<div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds-from-desktop">
<% if @merge_request.absorbing_organisation.phone.present? %>
<p class="govuk-body">Confirm the telephone number on file, or enter a new one.</p>
<div class="govuk-inset-text">
<%= @merge_request.absorbing_organisation.phone %>
</div>
<% end %>
<% 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, 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? || @merge_request.errors.key?(:new_telephone_number)),
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" %>
<% end %>
<% else %>
<%= f.govuk_text_field :new_telephone_number, label: nil, width: "two-thirds" %>
<%= f.hidden_field :page, value: "confirm_telephone_number" %>
<% end %>
<%= f.govuk_submit %>
<% end %>
</div>
</div>

5
app/views/merge_requests/helpdesk_ticket.html.erb

@ -0,0 +1,5 @@
<% content_for :before_content do %>
<% title = "Helpdesk ticket" %>
<% content_for :title, title %>
<%= govuk_back_link href: merge_date_merge_request_path(@merge_request) %>
<% end %>

22
app/views/merge_requests/merge_date.html.erb

@ -1,8 +1,24 @@
<% content_for :before_content do %>
<% title = "Tell us if your organisation is merging" %>
<% content_for :title, title %>
<%# TODO: Update this backlink to also work with the create org flow %>
<%= govuk_back_link href: confirm_telephone_number_merge_request_path(@merge_request) %>
<%= govuk_back_link href: merging_organisations_merge_request_path(@merge_request) %>
<% end %>
<div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds-from-desktop">
<%= form_with model: @merge_request, url: merge_request_path, method: :patch do |f| %>
<%= f.govuk_error_summary %>
<h2 class="govuk-heading-l">What is the merge date?</h2>
<h2 class="govuk-heading-l">What is the merge date?</h2>
<p class="govuk-hint">
Enter the official merge date. Log and organisation page data will show the new organisation name from this date. <br><br>
For example, 27 3 2024</p>
<%= f.govuk_date_field :merge_date,
legend: { hidden: true },
width: 20 do %>
<% end %>
<%= f.hidden_field :page, value: "merge_date" %>
<%= f.govuk_submit %>
<% end %>
</div>
</div>

33
app/views/merge_requests/new_organisation_address.html.erb

@ -1,33 +0,0 @@
<% content_for :before_content do %>
<% title = "New organisation address" %>
<% content_for :title, title %>
<%= 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 %>
<h2 class="govuk-heading-l">What is <%= @merge_request.new_organisation_name.possessive %> address?</h2>
<div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds-from-desktop">
<%= 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" %>
<div class="govuk-button-group">
<%= f.govuk_submit %>
<%= govuk_link_to("Skip for now", new_organisation_telephone_number_merge_request_path(@merge_request)) %>
</div>
</div>
</div>
<% end %>

19
app/views/merge_requests/new_organisation_name.html.erb

@ -1,19 +0,0 @@
<% content_for :before_content do %>
<% title = "New organisation name" %>
<% content_for :title, title %>
<%= govuk_back_link href: absorbing_organisation_merge_request_path(id: @merge_request) %>
<% end %>
<%= form_with model: @merge_request, url: merge_request_path, method: :patch do |f| %>
<%= f.govuk_error_summary %>
<h2 class="govuk-heading-l">What is the new organisation called?</h2>
<div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds-from-desktop">
<%= f.govuk_text_field :new_organisation_name, label: nil %>
<%= f.hidden_field :page, value: "new_organisation_name" %>
<%= f.govuk_submit %>
<% end %>
</div>
</div>

20
app/views/merge_requests/new_organisation_telephone_number.html.erb

@ -1,20 +0,0 @@
<% 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 %>
<%= form_with model: @merge_request, url: merge_request_path, method: :patch do |f| %>
<%= f.govuk_error_summary %>
<h2 class="govuk-heading-l">What is <%= @merge_request.new_organisation_name.possessive %> telephone number?</h2>
<div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds-from-desktop">
<%= f.govuk_text_field :new_organisation_telephone_number, label: nil, width: "two-thirds" %>
<%= f.hidden_field :page, value: "new_organisation_telephone_number" %>
<div class="govuk-button-group">
<%= f.govuk_submit %>
</div>
</div>
</div>
<% end %>

5
app/views/merge_requests/new_organisation_type.html.erb

@ -1,5 +0,0 @@
<% 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 %>

13
config/locales/en.yml

@ -176,16 +176,9 @@ en:
attributes:
absorbing_organisation_id:
blank: "Select the organisation absorbing the others"
telephone_number_correct:
blank: "Select to confirm or enter a new telephone number"
invalid: "Enter a valid telephone number"
new_telephone_number:
blank: "Enter a valid telephone number"
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"
merge_date:
blank: "Enter a merge date"
invalid: "Enter a valid merge date"
notification:
logs_deleted:

6
config/routes.rb

@ -207,12 +207,8 @@ Rails.application.routes.draw do
patch "merging-organisations", to: "merge_requests#update_merging_organisations"
get "merging-organisations/remove", to: "merge_requests#remove_merging_organisation"
get "absorbing-organisation"
get "confirm-telephone-number"
get "new-organisation-name"
get "new-organisation-address"
get "new-organisation-telephone-number"
get "new-organisation-type"
get "merge-date"
get "helpdesk-ticket"
get "details", to: "merge_requests#details"
end
end

27
db/migrate/20240813112119_remove_new_org_merge_request_fields.rb

@ -0,0 +1,27 @@
class RemoveNewOrgMergeRequestFields < ActiveRecord::Migration[7.0]
def up
change_table :merge_requests, bulk: true do |t|
t.remove :new_absorbing_organisation
t.remove :telephone_number_correct
t.remove :new_telephone_number
t.remove :new_organisation_name
t.remove :new_organisation_address_line1
t.remove :new_organisation_address_line2
t.remove :new_organisation_postcode
t.remove :new_organisation_telephone_number
end
end
def down
change_table :merge_requests, bulk: true do |t|
t.column :new_absorbing_organisation, :boolean
t.column :telephone_number_correct, :boolean
t.column :new_telephone_number, :string
t.column :new_organisation_name, :string
t.column :new_organisation_address_line1, :string
t.column :new_organisation_address_line2, :string
t.column :new_organisation_postcode, :string
t.column :new_organisation_telephone_number, :string
end
end
end

8
db/schema.rb

@ -433,14 +433,6 @@ ActiveRecord::Schema[7.0].define(version: 2024_08_19_143150) do
t.datetime "updated_at", null: false
t.integer "status"
t.integer "absorbing_organisation_id"
t.boolean "new_absorbing_organisation"
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"
t.string "new_organisation_telephone_number"
t.datetime "merge_date"
t.integer "requester_id"
t.string "helpdesk_ticket"

383
spec/requests/merge_requests_controller_spec.rb

@ -194,38 +194,6 @@ RSpec.describe MergeRequestsController, type: :request do
end
end
describe "#confirm_telephone_number" do
let(:merge_request) do
MergeRequest.create!(
absorbing_organisation: create(:organisation, phone: phone_number),
requesting_organisation: organisation,
)
end
before { get "/merge-request/#{merge_request.id}/confirm-telephone-number", headers: }
context "when org has phone number" do
let(:phone_number) { 123 }
it "asks to confirm or provide new number" do
expect(page).to have_content("This telephone number is correct")
expect(page).to have_content("Confirm the telephone number on file, or enter a new one.")
expect(page).to have_content(phone_number)
expect(page).to have_content("What is #{merge_request.absorbing_organisation.name}'s telephone number?")
end
end
context "when org does not have a phone number set" do
let(:phone_number) { nil }
it "asks provide new number" do
expect(page).not_to have_content("This telephone number is correct")
expect(page).not_to have_content("Confirm the telephone number on file, or enter a new one.")
expect(page).to have_content("What is #{merge_request.absorbing_organisation.name}'s telephone number?")
end
end
end
describe "#absorbing_organisation" do
let(:merge_request) { MergeRequest.create!(requesting_organisation: organisation) }
@ -241,6 +209,19 @@ RSpec.describe MergeRequestsController, type: :request do
end
end
describe "#merge_date" do
context "when viewing merge date page" do
before do
merge_request.update!(absorbing_organisation_id: organisation.id)
get "/merge-request/#{merge_request.id}/merge-date", headers:
end
it "shows the correct content" do
expect(page).to have_content("What is the merge date?")
end
end
end
describe "#update" do
describe "from absorbing_organisation page" do
context "when not answering the question" do
@ -264,7 +245,7 @@ RSpec.describe MergeRequestsController, type: :request do
end
context "when absorbing_organisation_id set to id" do
let(:merge_request) { MergeRequest.create!(requesting_organisation: organisation, new_absorbing_organisation: true) }
let(:merge_request) { MergeRequest.create!(requesting_organisation: organisation) }
let(:params) do
{ merge_request: { absorbing_organisation_id: other_organisation.id, page: "absorbing_organisation" } }
end
@ -279,109 +260,19 @@ RSpec.describe MergeRequestsController, type: :request do
expect(response).to redirect_to(merging_organisations_merge_request_path(merge_request))
end
it "updates absorbing_organisation_id and sets new_absorbing_organisation to false" do
it "updates absorbing_organisation_id" do
expect { request }.to change {
merge_request.reload.absorbing_organisation
}.from(nil).to(other_organisation).and change {
merge_request.reload.new_absorbing_organisation
}.from(true).to(false)
}.from(nil).to(other_organisation)
end
end
end
describe "from confirm_telephone_number page" 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: true, page: "confirm_telephone_number" } }
end
let(:request) do
patch "/merge-request/#{merge_request.id}", headers:, params:
end
it "redirects merge date path" do
request
expect(response).to redirect_to(merge_date_merge_request_path(merge_request))
end
it "updates telephone_number_correct and sets new_telephone_number to nil" do
expect { request }.to change {
merge_request.reload.telephone_number_correct
}.from(nil).to(true).and change {
merge_request.reload.new_telephone_number
}.from("123").to(nil)
end
end
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: false, new_telephone_number: "123", page: "confirm_telephone_number" } }
end
let(:request) do
patch "/merge-request/#{merge_request.id}", headers:, params:
end
it "redirects merge date path" do
request
expect(response).to redirect_to(merge_date_merge_request_path(merge_request))
end
it "updates telephone_number_correct and sets new_telephone_number to nil" do
expect { request }.to change {
merge_request.reload.new_telephone_number
}.from(nil).to("123")
end
end
context "when not answering the question and the org has phone number" do
let(:merge_request) { MergeRequest.create!(requesting_organisation: organisation, absorbing_organisation: create(:organisation, phone: "123")) }
let(:params) do
{ merge_request: { page: "confirm_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("Select to confirm or enter a new telephone number")
end
it "does not update the request" do
expect { request }.not_to(change { merge_request.reload.attributes })
end
end
context "when not answering the question and the org does not have a phone number" do
let(:merge_request) { MergeRequest.create!(requesting_organisation: organisation, absorbing_organisation: other_organisation) }
let(:params) do
{ merge_request: { page: "confirm_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 request" do
expect { request }.not_to(change { merge_request.reload.attributes })
end
end
context "when not answering the phone number" do
describe "from merge_date page" do
context "when not answering the question" 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: false } }
{ merge_request: { page: "merge_date" } }
end
let(:request) do
patch "/merge-request/#{merge_request.id}", headers:, params:
@ -390,230 +281,53 @@ RSpec.describe MergeRequestsController, type: :request do
it "renders the error" do
request
expect(page).to have_content("Enter a valid telephone number")
expect(response).to have_http_status(:unprocessable_entity)
expect(page).to have_content("Enter a merge date")
end
it "does not update the request" do
expect { request }.not_to(change { merge_request.reload.attributes })
end
end
end
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
before do
get "/merge-request/#{merge_request.id}/new-organisation-name", headers:
end
it "displays the correct question" do
expect(page).to have_content("What is the new organisation called?")
end
it "has the correct back button" do
expect(page).to have_link("Back", href: absorbing_organisation_merge_request_path(merge_request))
end
end
context "when updating the new organisation name" do
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 "redirects to new organisation address path" do
request
expect(response).to redirect_to(new_organisation_address_merge_request_path(merge_request))
end
it "updates new organisation name to the correct name" do
expect { request }.to change {
merge_request.reload.new_organisation_name
}.from(nil).to("new org name")
end
end
context "when the new organisation name is not answered" do
let(:params) do
{ merge_request: { new_organisation_name: nil, 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("Enter an organisation name")
end
it "does not update the organisation name" 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
context "when merge date set to an invalid date" do
let(:merge_request) { MergeRequest.create!(requesting_organisation: organisation) }
let(:params) do
{ merge_request: { new_organisation_name: "New org name", page: "new_organisation_name" } }
{ merge_request: { page: "merge_date", "merge_date(3i)": "10", "merge_date(2i)": "44", "merge_date(1i)": "2022" } }
end
let(:request) do
patch "/merge-request/#{merge_request.id}", headers:, params:
end
it "renders the error" do
it "displays the page with an error message" 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 })
expect(response).to have_http_status(:unprocessable_entity)
expect(page).to have_content("Enter a valid merge date")
end
end
end
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
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
context "when merge date set to a valid date" do
let(:merge_request) { MergeRequest.create!(requesting_organisation: organisation) }
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",
} }
{ merge_request: { page: "merge_date", "merge_date(3i)": "10", "merge_date(2i)": "4", "merge_date(1i)": "2022" } }
end
let(:request) do
patch "/merge-request/#{merge_request.id}", headers:, params:
end
it "redirects to new organisation telephone path" do
it "redirects to helpdesk ticket 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 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 address line" do
expect { request }.to change {
merge_request.reload.new_organisation_address_line2
}.from(nil).to("second address line")
expect(response).to redirect_to(helpdesk_ticket_merge_request_path(merge_request))
end
it "updates new organisation postcode to correct address line" do
it "updates merge_date" 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
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 })
merge_request.reload.merge_date
}.from(nil).to(Time.zone.local(2022, 4, 10))
end
end
end
@ -625,7 +339,7 @@ RSpec.describe MergeRequestsController, type: :request do
sign_in user
end
describe "#organisations" do
describe "#merging_organisations" do
let(:params) { { merge_request: { requesting_organisation_id: other_organisation.id, status: "incomplete" } } }
context "when creating a new merge request" do
@ -649,7 +363,7 @@ RSpec.describe MergeRequestsController, type: :request do
end
end
describe "#update_organisations" do
describe "#update_merging_organisations" do
let(:params) { { merge_request: { merging_organisation: other_organisation.id } } }
context "when updating a merge request with a new organisation" do
@ -663,7 +377,7 @@ RSpec.describe MergeRequestsController, type: :request do
end
end
describe "#remove_organisation" do
describe "#remove_merging_organisation" do
let(:params) { { merge_request: { merging_organisation: other_organisation.id } } }
context "when removing an organisation from merge request" do
@ -681,7 +395,7 @@ RSpec.describe MergeRequestsController, type: :request do
describe "#update" do
describe "from absorbing_organisation page" do
context "when absorbing_organisation_id set to id" do
let(:merge_request) { MergeRequest.create!(requesting_organisation: organisation, new_absorbing_organisation: true) }
let(:merge_request) { MergeRequest.create!(requesting_organisation: organisation) }
let(:params) do
{ merge_request: { absorbing_organisation_id: other_organisation.id, page: "absorbing_organisation" } }
end
@ -695,25 +409,6 @@ RSpec.describe MergeRequestsController, type: :request do
end
end
end
describe "#other_merging_organisations" do
let(:other_merging_organisations) { "A list of other merging organisations" }
let(:params) { { merge_request: { other_merging_organisations:, page: "organisations" } } }
let(:request) do
patch "/merge-request/#{merge_request.id}", headers:, params:
end
context "when adding other merging organisations" do
before do
MergeRequestOrganisation.create!(merge_request_id: merge_request.id, merging_organisation_id: other_organisation.id)
request
end
it "does not allow updating merging organisations" do
expect(response).to have_http_status(:not_found)
end
end
end
end
end
end

Loading…
Cancel
Save