From 2b37539e58f6273fe48295fec48bc55c1a33eddd Mon Sep 17 00:00:00 2001 From: Kat Date: Mon, 10 Jul 2023 10:37:21 +0100 Subject: [PATCH] Add a route for sales logs duplicates --- app/controllers/duplicate_logs_controller.rb | 15 +++++++-- app/controllers/form_controller.rb | 2 +- config/routes.rb | 1 + spec/requests/form_controller_spec.rb | 33 ++++++++++++++++++++ 4 files changed, 48 insertions(+), 3 deletions(-) diff --git a/app/controllers/duplicate_logs_controller.rb b/app/controllers/duplicate_logs_controller.rb index 6996b78d4..ddb2c9659 100644 --- a/app/controllers/duplicate_logs_controller.rb +++ b/app/controllers/duplicate_logs_controller.rb @@ -1,9 +1,20 @@ class DuplicateLogsController < ApplicationController + before_action :find_resource_by_named_id + def show - @log = LettingsLog.find(params[:lettings_log_id]) - @duplicate_logs = LettingsLog.duplicate_logs_for_organisation(current_user.organisation_id, @log) + @duplicate_logs = @log.class.duplicate_logs_for_organisation(current_user.organisation_id, @log) @all_duplicates = [@log, *@duplicate_logs] duplicate_check_question_ids = %w[startdate tenancycode postcode_full age1 sex1 ecstat1 tcharge] @duplicate_check_questions = duplicate_check_question_ids.map { |question_id| @log.form.get_question(question_id, @log) }.compact end + +private + + def find_resource_by_named_id + @log = if params[:sales_log_id].present? + current_user.sales_logs.visible.find_by(id: params[:sales_log_id]) + else + current_user.lettings_logs.visible.find_by(id: params[:lettings_log_id]) + end + end end diff --git a/app/controllers/form_controller.rb b/app/controllers/form_controller.rb index 8466c8e64..c22956b1d 100644 --- a/app/controllers/form_controller.rb +++ b/app/controllers/form_controller.rb @@ -154,7 +154,7 @@ private end def successful_redirect_path - if LettingsLog.duplicate_logs_for_organisation(current_user.organisation, @log).count.positive? + if @log.class.duplicate_logs_for_organisation(current_user.organisation, @log).count.positive? return send("#{@log.class.name.underscore}_duplicate_logs_path", @log) end diff --git a/config/routes.rb b/config/routes.rb index c1f817aea..707e8e942 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -236,6 +236,7 @@ Rails.application.routes.draw do resources :sales_logs, path: "/sales-logs" do get "delete-confirmation", to: "sales_logs#delete_confirmation" + get "duplicate-logs", to: "duplicate_logs#show" collection do get "csv-download", to: "sales_logs#download_csv" diff --git a/spec/requests/form_controller_spec.rb b/spec/requests/form_controller_spec.rb index 60a0b59f1..7f4fa749f 100644 --- a/spec/requests/form_controller_spec.rb +++ b/spec/requests/form_controller_spec.rb @@ -549,6 +549,39 @@ RSpec.describe FormController, type: :request do end end + context "with valid sales answers" do + let(:sales_log) do + create( + :sales_log, + created_by: user, + ) + end + let(:params) do + { + id: sales_log.id, + sales_log: { + page: "buyer-1-age", + age1: 20, + }, + } + end + + context "and duplicate logs" do + let(:duplicate_logs) { create_list(:sales_log, 2) } + + before do + allow(SalesLog).to receive(:duplicate_logs_for_organisation).and_return(duplicate_logs) + post "/sales-logs/#{sales_log.id}/buyer-1-age", params: + end + + it "redirects to the duplicate logs page" do + expect(response).to redirect_to("/sales-logs/#{sales_log.id}/duplicate-logs") + follow_redirect! + expect(page).to have_content("These logs are duplicates") + end + end + end + context "when the question has a conditional question" do context "and the conditional question is not enabled" do context "but is applicable because it has an inferred check answers display value" do