Browse Source

Add a route for sales logs duplicates

pull/1763/head
Kat 3 years ago
parent
commit
2b37539e58
  1. 15
      app/controllers/duplicate_logs_controller.rb
  2. 2
      app/controllers/form_controller.rb
  3. 1
      config/routes.rb
  4. 33
      spec/requests/form_controller_spec.rb

15
app/controllers/duplicate_logs_controller.rb

@ -1,9 +1,20 @@
class DuplicateLogsController < ApplicationController class DuplicateLogsController < ApplicationController
before_action :find_resource_by_named_id
def show def show
@log = LettingsLog.find(params[:lettings_log_id]) @duplicate_logs = @log.class.duplicate_logs_for_organisation(current_user.organisation_id, @log)
@duplicate_logs = LettingsLog.duplicate_logs_for_organisation(current_user.organisation_id, @log)
@all_duplicates = [@log, *@duplicate_logs] @all_duplicates = [@log, *@duplicate_logs]
duplicate_check_question_ids = %w[startdate tenancycode postcode_full age1 sex1 ecstat1 tcharge] 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 @duplicate_check_questions = duplicate_check_question_ids.map { |question_id| @log.form.get_question(question_id, @log) }.compact
end 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 end

2
app/controllers/form_controller.rb

@ -154,7 +154,7 @@ private
end end
def successful_redirect_path 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) return send("#{@log.class.name.underscore}_duplicate_logs_path", @log)
end end

1
config/routes.rb

@ -236,6 +236,7 @@ Rails.application.routes.draw do
resources :sales_logs, path: "/sales-logs" do resources :sales_logs, path: "/sales-logs" do
get "delete-confirmation", to: "sales_logs#delete_confirmation" get "delete-confirmation", to: "sales_logs#delete_confirmation"
get "duplicate-logs", to: "duplicate_logs#show"
collection do collection do
get "csv-download", to: "sales_logs#download_csv" get "csv-download", to: "sales_logs#download_csv"

33
spec/requests/form_controller_spec.rb

@ -549,6 +549,39 @@ RSpec.describe FormController, type: :request do
end end
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 "when the question has a conditional question" do
context "and the conditional question is not enabled" do context "and the conditional question is not enabled" do
context "but is applicable because it has an inferred check answers display value" do context "but is applicable because it has an inferred check answers display value" do

Loading…
Cancel
Save