Browse Source

Add missing sales deduplication steps

pull/2141/head
Kat 2 years ago
parent
commit
f6dafd31c6
  1. 5
      app/controllers/delete_logs_controller.rb
  2. 14
      app/controllers/form_controller.rb
  3. 27
      spec/features/sales_log_spec.rb

5
app/controllers/delete_logs_controller.rb

@ -61,6 +61,11 @@ class DeleteLogsController < ApplicationController
logs = SalesLog.find(params.require(:ids))
discard logs
if request.referer&.include?("delete-duplicates")
logs.each do |log|
log.duplicate_log_references.destroy_all
end
SalesLog.find(params["remaining_log_id"]).duplicate_log_references.destroy_all
redirect_to sales_log_duplicate_logs_path(sales_log_id: params["remaining_log_id"], original_log_id: params["original_log_id"], referrer: params[:referrer], organisation_id: params[:organisation_id]), notice: I18n.t("notification.duplicate_logs_deleted", count: logs.count, log_ids: duplicate_log_ids(logs))
else
redirect_to sales_logs_path, notice: I18n.t("notification.logs_deleted", count: logs.count)

14
app/controllers/form_controller.rb

@ -171,25 +171,19 @@ private
return correcting_duplicate_logs_redirect_path
end
if @log.lettings?
dynamic_duplicates = current_user.lettings_logs.duplicate_logs(@log)
dynamic_duplicates = @log.lettings? ? current_user.lettings_logs.duplicate_logs(@log) : current_user.sales_logs.duplicate_logs(@log)
if dynamic_duplicates.count.positive?
saved_duplicates = @log.duplicates
unless saved_duplicates == dynamic_duplicates
duplicate_log_reference = DuplicateLogReference.find_or_create_by!(log_id: @log.id, log_type: "LettingsLog")
duplicate_log_reference = DuplicateLogReference.find_or_create_by!(log_id: @log.id, log_type: @log.class.name)
dynamic_duplicates.each do |duplicate|
DuplicateLogReference.find_or_create_by!(log_id: duplicate.id, log_type: "LettingsLog", duplicate_set_id: duplicate_log_reference.duplicate_set_id)
DuplicateLogReference.find_or_create_by!(log_id: duplicate.id, log_type: @log.class.name, duplicate_set_id: duplicate_log_reference.duplicate_set_id)
end
return send("lettings_log_duplicate_logs_path", @log, original_log_id: @log.id)
return send("#{@log.class.name.underscore}_duplicate_logs_path", @log, original_log_id: @log.id)
end
end
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
if is_referrer_type?("check_answers")
next_page_id = form.next_page_id(@page, @log, current_user)
next_page = form.get_page(next_page_id)

27
spec/features/sales_log_spec.rb

@ -198,6 +198,11 @@ RSpec.describe "Sales Log Features" do
end
it "allows keeping the original log and deleting duplicates" do
expect(DuplicateLogReference.count).to eq(2)
sales_log.reload
expect(sales_log.duplicates.count).to eq(1)
expect(sales_log.duplicates).to include(duplicate_log)
expect(page).to have_current_path("/sales-logs/#{sales_log.id}/duplicate-logs?original_log_id=#{sales_log.id}")
click_link("Keep this log and delete duplicates", href: "/sales-logs/#{sales_log.id}/delete-duplicates?original_log_id=#{sales_log.id}")
expect(page).to have_current_path("/sales-logs/#{sales_log.id}/delete-duplicates?original_log_id=#{sales_log.id}")
@ -210,6 +215,9 @@ 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 Log #{sales_log.id}", href: "/sales-logs/#{sales_log.id}")
expect(DuplicateLogReference.count).to eq(0)
expect(sales_log.duplicates.count).to eq(0)
end
it "allows changing answer on remaining original log" do
@ -222,6 +230,11 @@ RSpec.describe "Sales Log Features" do
end
it "allows keeping the duplicate log and deleting the original one" do
expect(DuplicateLogReference.count).to eq(2)
duplicate_log.reload
expect(duplicate_log.duplicates.count).to eq(1)
expect(duplicate_log.duplicates).to include(sales_log)
expect(page).to have_current_path("/sales-logs/#{sales_log.id}/duplicate-logs?original_log_id=#{sales_log.id}")
click_link("Keep this log and delete duplicates", href: "/sales-logs/#{duplicate_log.id}/delete-duplicates?original_log_id=#{sales_log.id}")
expect(page).to have_current_path("/sales-logs/#{duplicate_log.id}/delete-duplicates?original_log_id=#{sales_log.id}")
@ -234,6 +247,9 @@ 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")
expect(DuplicateLogReference.count).to eq(0)
expect(duplicate_log.duplicates.count).to eq(0)
end
it "allows changing answers on remaining duplicate log" do
@ -246,6 +262,11 @@ RSpec.describe "Sales Log Features" do
end
it "allows deduplicating logs by changing the answers on the duplicate log" do
expect(DuplicateLogReference.count).to eq(2)
sales_log.reload
expect(sales_log.duplicates.count).to eq(1)
expect(sales_log.duplicates).to include(duplicate_log)
expect(page).to have_current_path("/sales-logs/#{sales_log.id}/duplicate-logs?original_log_id=#{sales_log.id}")
click_link("Change", href: "/sales-logs/#{duplicate_log.id}/purchaser-code?first_remaining_duplicate_id=#{sales_log.id}&original_log_id=#{sales_log.id}&referrer=duplicate_logs")
fill_in("sales-log-purchid-field", with: "something else")
@ -255,6 +276,9 @@ RSpec.describe "Sales Log Features" do
expect(page).to have_css(".govuk-notification-banner.govuk-notification-banner--success")
expect(page).to have_content("Log #{duplicate_log.id} is no longer a duplicate and has been removed from the list")
expect(page).to have_content("You changed the purchaser code.")
expect(DuplicateLogReference.count).to eq(0)
expect(duplicate_log.duplicates.count).to eq(0)
end
it "allows deduplicating logs by changing the answers on the original log" do
@ -266,6 +290,9 @@ RSpec.describe "Sales Log Features" do
expect(page).to have_css(".govuk-notification-banner.govuk-notification-banner--success")
expect(page).to have_content("Log #{sales_log.id} is no longer a duplicate and has been removed from the list")
expect(page).to have_content("You changed the purchaser code.")
expect(DuplicateLogReference.count).to eq(0)
expect(duplicate_log.duplicates.count).to eq(0)
end
end
end

Loading…
Cancel
Save