From ba9d5aa57e9058f621b9b889ed7607b54b406387 Mon Sep 17 00:00:00 2001 From: Kat Date: Tue, 11 Jul 2023 16:20:46 +0100 Subject: [PATCH] Update change button routing --- app/controllers/duplicate_logs_controller.rb | 4 +++- app/controllers/form_controller.rb | 13 ++++++++++++- app/helpers/duplicate_logs_helper.rb | 12 ++++++++---- .../duplicate_logs/_duplicate_log_check_answers.erb | 2 +- app/views/duplicate_logs/show.erb | 2 +- spec/features/lettings_log_spec.rb | 10 +++++++++- spec/features/sales_log_spec.rb | 10 +++++++++- 7 files changed, 43 insertions(+), 10 deletions(-) diff --git a/app/controllers/duplicate_logs_controller.rb b/app/controllers/duplicate_logs_controller.rb index 546699453..539f06e91 100644 --- a/app/controllers/duplicate_logs_controller.rb +++ b/app/controllers/duplicate_logs_controller.rb @@ -62,7 +62,9 @@ private end def find_original_log_id + return unless @log + query_params = URI.parse(request.url).query - @original_log_id = CGI.parse(query_params)["original_log_id"][0].to_i if query_params + @original_log_id = query_params.present? ? CGI.parse(query_params)["original_log_id"][0]&.to_i : @log.id end end diff --git a/app/controllers/form_controller.rb b/app/controllers/form_controller.rb index 93cfda2f0..c1e2d014f 100644 --- a/app/controllers/form_controller.rb +++ b/app/controllers/form_controller.rb @@ -146,6 +146,17 @@ private parsed_params["referrer"][0] end + def original_duplicate_log_id_from_query + query_params = URI.parse(request.url).query + + return unless query_params + + parsed_params = CGI.parse(query_params) + return unless parsed_params["original_log_id"] + + parsed_params["original_log_id"][0] + end + def previous_interruption_screen_page_id params[@log.model_name.param_key]["interruption_page_id"] end @@ -177,7 +188,7 @@ private end end if previous_interruption_screen_page_id.present? - return send("#{@log.class.name.underscore}_#{previous_interruption_screen_page_id}_path", @log, { referrer: previous_interruption_screen_referrer }.compact) + return send("#{@log.class.name.underscore}_#{previous_interruption_screen_page_id}_path", @log, { referrer: previous_interruption_screen_referrer, original_log_id: original_duplicate_log_id_from_query }.compact) end redirect_path = form.next_page_redirect_path(@page, @log, current_user) diff --git a/app/helpers/duplicate_logs_helper.rb b/app/helpers/duplicate_logs_helper.rb index 5c619228a..c5041d7aa 100644 --- a/app/helpers/duplicate_logs_helper.rb +++ b/app/helpers/duplicate_logs_helper.rb @@ -1,17 +1,21 @@ module DuplicateLogsHelper include GovukLinkHelper - def duplicate_logs_continue_button(all_duplicates, duplicate_log, original_log) + def duplicate_logs_continue_button(all_duplicates, duplicate_log, original_log_id) if all_duplicates.count > 1 - return govuk_button_link_to "Keep this log and delete duplicates", send("#{duplicate_log.class.name.underscore}_delete_duplicates_path", duplicate_log, original_log_id: original_log.id) + return govuk_button_link_to "Keep this log and delete duplicates", send("#{duplicate_log.class.name.underscore}_delete_duplicates_path", duplicate_log, original_log_id:) end - if original_log.id == duplicate_log.id - govuk_button_link_to "Continue editing Log #{duplicate_log.id}", send("#{duplicate_log.class.name.underscore}_path", duplicate_log) + if original_log_id == duplicate_log.id + govuk_button_link_to "Back to Log #{duplicate_log.id}", send("#{duplicate_log.class.name.underscore}_path", duplicate_log) else return govuk_button_link_to "Back to lettings logs", lettings_logs_path if duplicate_log.lettings? govuk_button_link_to "Back to sales logs", sales_logs_path end end + + def duplicate_logs_action_href(log, page_id, original_log_id) + send("#{log.model_name.param_key}_#{page_id}_path", log, referrer: "interruption_screen", original_log_id:) + end end diff --git a/app/views/duplicate_logs/_duplicate_log_check_answers.erb b/app/views/duplicate_logs/_duplicate_log_check_answers.erb index 15d4caf73..a5abaea16 100644 --- a/app/views/duplicate_logs/_duplicate_log_check_answers.erb +++ b/app/views/duplicate_logs/_duplicate_log_check_answers.erb @@ -29,7 +29,7 @@ <% row.action( text: question.action_text(@log), - href: action_href(@log, question.page.id), + href: duplicate_logs_action_href(@log, question.page.id, @original_log_id), visually_hidden_text: question.check_answer_label.to_s.downcase, ) %> <% end %> diff --git a/app/views/duplicate_logs/show.erb b/app/views/duplicate_logs/show.erb index 6a96561cb..e99eac7f7 100644 --- a/app/views/duplicate_logs/show.erb +++ b/app/views/duplicate_logs/show.erb @@ -13,7 +13,7 @@ <% @all_duplicates.each_with_index do |log, index| %> <%= render partial: "duplicate_log", locals: { log: log } %> <%= render partial: "duplicate_log_check_answers", locals: { log: log } %> - <%= duplicate_logs_continue_button(@all_duplicates, log, @log) %> + <%= duplicate_logs_continue_button(@all_duplicates, log, @original_log_id) %> <% if index < @all_duplicates.count - 1 %>
<% end %> diff --git a/spec/features/lettings_log_spec.rb b/spec/features/lettings_log_spec.rb index 020910672..4d1dbaeec 100644 --- a/spec/features/lettings_log_spec.rb +++ b/spec/features/lettings_log_spec.rb @@ -418,7 +418,11 @@ RSpec.describe "Lettings Log Features" do expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/duplicate-logs?original_log_id=#{lettings_log.id}") expect(page).not_to have_content("These logs are duplicates") expect(page).not_to have_link("Keep this log and delete duplicates") - expect(page).to have_link("Continue editing Log #{lettings_log.id}", href: "/lettings-logs/#{lettings_log.id}") + expect(page).to have_link("Back to Log #{lettings_log.id}", href: "/lettings-logs/#{lettings_log.id}") + click_link("Change", href: "/lettings-logs/#{lettings_log.id}/tenant-code?original_log_id=#{lettings_log.id}&referrer=interruption_screen") + click_button("Save and continue") + expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/duplicate-logs?original_log_id=#{lettings_log.id}") + expect(page).to have_link("Back to Log #{lettings_log.id}", href: "/lettings-logs/#{lettings_log.id}") end it "allows keeping the duplicate log and deleting the original one" do @@ -434,6 +438,10 @@ RSpec.describe "Lettings Log Features" do expect(page).not_to have_content("These logs are duplicates") expect(page).not_to have_link("Keep this log and delete duplicates") expect(page).to have_link("Back to lettings logs", href: "/lettings-logs") + click_link("Change", href: "/lettings-logs/#{duplicate_log.id}/tenant-code?original_log_id=#{lettings_log.id}&referrer=interruption_screen") + click_button("Save and continue") + expect(page).to have_current_path("/lettings-logs/#{duplicate_log.id}/duplicate-logs?original_log_id=#{lettings_log.id}") + expect(page).to have_link("Back to lettings logs", href: "/lettings-logs") end end end diff --git a/spec/features/sales_log_spec.rb b/spec/features/sales_log_spec.rb index 301f8e648..a971f9763 100644 --- a/spec/features/sales_log_spec.rb +++ b/spec/features/sales_log_spec.rb @@ -169,7 +169,11 @@ RSpec.describe "Sales Log Features" do expect(page).to have_current_path("/sales-logs/#{sales_log.id}/duplicate-logs?original_log_id=#{sales_log.id}") expect(page).not_to have_content("These logs are duplicates") expect(page).not_to have_link("Keep this log and delete duplicates") - expect(page).to have_link("Continue editing Log #{sales_log.id}", href: "/sales-logs/#{sales_log.id}") + expect(page).to have_link("Back to Log #{sales_log.id}", href: "/sales-logs/#{sales_log.id}") + click_link("Change", href: "/sales-logs/#{sales_log.id}/purchaser-code?original_log_id=#{sales_log.id}&referrer=interruption_screen") + click_button("Save and continue") + expect(page).to have_current_path("/sales-logs/#{sales_log.id}/duplicate-logs?original_log_id=#{sales_log.id}") + expect(page).to have_link("Back to Log #{sales_log.id}", href: "/sales-logs/#{sales_log.id}") end it "allows keeping the duplicate log and deleting the original one" do @@ -185,6 +189,10 @@ RSpec.describe "Sales Log Features" do expect(page).not_to have_content("These logs are duplicates") expect(page).not_to have_link("Keep this log and delete duplicates") expect(page).to have_link("Back to sales logs", href: "/sales-logs") + click_link("Change", href: "/sales-logs/#{duplicate_log.id}/purchaser-code?original_log_id=#{sales_log.id}&referrer=interruption_screen") + click_button("Save and continue") + expect(page).to have_current_path("/sales-logs/#{duplicate_log.id}/duplicate-logs?original_log_id=#{sales_log.id}") + expect(page).to have_link("Back to sales logs", href: "/sales-logs") end end end