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
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

2
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

1
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"

33
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

Loading…
Cancel
Save