From ab4a122d36f024b32c0d2ac79321946794a8711c Mon Sep 17 00:00:00 2001 From: Kat Date: Wed, 19 Jul 2023 16:29:53 +0100 Subject: [PATCH] Route back to the initial log if it still has duplicates --- app/controllers/form_controller.rb | 30 ++++++++++++++++------- spec/requests/form_controller_spec.rb | 34 +++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 9 deletions(-) diff --git a/app/controllers/form_controller.rb b/app/controllers/form_controller.rb index 441ff53f6..f77ae23a9 100644 --- a/app/controllers/form_controller.rb +++ b/app/controllers/form_controller.rb @@ -161,17 +161,29 @@ private params[@log.model_name.param_key]["interruption_page_referrer_type"].presence end + def correcting_duplicate_logs_redirect_path + class_name = @log.class.name.underscore + + original_log = current_user.send(class_name.pluralize).find_by(id: from_referrer_query("original_log_id")) + + if current_user.send(class_name.pluralize).duplicate_logs(original_log).count.positive? + send("#{class_name}_duplicate_logs_path", original_log, original_log_id: original_log.id) + else + send("#{class_name}_duplicate_logs_path", "#{class_name}_id".to_sym => from_referrer_query("remaining_duplicate_id"), original_log_id: from_referrer_query("original_log_id")) + end + end + def successful_redirect_path if FeatureToggle.deduplication_flow_enabled? - if @log.lettings? - if is_referrer_type?("duplicate_logs") - return send("lettings_log_duplicate_logs_path", lettings_log_id: from_referrer_query("remaining_duplicate_id"), original_log_id: from_referrer_query("original_log_id")) - elsif current_user.lettings_logs.duplicate_logs(@log).count.positive? - return send("lettings_log_duplicate_logs_path", @log, original_log_id: @log.id) - end - elsif is_referrer_type?("duplicate_logs") - return send("sales_log_duplicate_logs_path", sales_log_id: from_referrer_query("remaining_duplicate_id"), original_log_id: from_referrer_query("original_log_id")) - elsif current_user.sales_logs.duplicate_logs(@log).count.positive? + if is_referrer_type?("duplicate_logs") + return correcting_duplicate_logs_redirect_path + end + + if @log.lettings? && current_user.lettings_logs.duplicate_logs(@log).count.positive? + return send("lettings_log_duplicate_logs_path", @log, original_log_id: @log.id) + end + + if @log.sales? && current_user.sales_logs.duplicate_logs(@log).count.positive? return send("sales_log_duplicate_logs_path", @log, original_log_id: @log.id) end end diff --git a/spec/requests/form_controller_spec.rb b/spec/requests/form_controller_spec.rb index ff8811562..d8dc437d3 100644 --- a/spec/requests/form_controller_spec.rb +++ b/spec/requests/form_controller_spec.rb @@ -755,6 +755,23 @@ RSpec.describe FormController, type: :request do it "redirects back to the duplicates page for remaining duplicates" do expect(response).to redirect_to("/lettings-logs/#{duplicate_log.id}/duplicate-logs?original_log_id=#{lettings_log.id}") end + + context "and the answer didn't change" do + let(:params) do + { + id: lettings_log.id, + lettings_log: { + page: "lead_tenant_age", + age1: lettings_log.age1, + age1_known: lettings_log.age1_known, + }, + } + end + + it "redirects back to the duplicates page for remaining duplicates" do + expect(response).to have_http_status(:ok) + end + end end context "when the sales question was accessed from a duplicate logs screen" do @@ -779,6 +796,23 @@ RSpec.describe FormController, type: :request do it "redirects back to the duplicates page for remaining duplicates" do expect(response).to redirect_to("/sales-logs/#{duplicate_log.id}/duplicate-logs?original_log_id=#{sales_log.id}") end + + context "and the answer didn't change" do + let(:params) do + { + id: sales_log.id, + sales_log: { + page: "buyer_1_age", + age1: sales_log.age1, + age1_known: sales_log.age1_known, + }, + } + end + + it "redirects back to the duplicates page for remaining duplicates" do + expect(response).to have_http_status(:ok) + end + end end end