From 2d7e7337c77dbedb8534cf188cd4b9d9af8cc723 Mon Sep 17 00:00:00 2001 From: Kat Date: Thu, 18 Jan 2024 21:24:03 +0000 Subject: [PATCH] Set duplicate_set_id straight on logs --- app/controllers/delete_logs_controller.rb | 8 +- app/controllers/form_controller.rb | 29 +++-- app/models/duplicate_log_reference.rb | 18 --- app/models/lettings_log.rb | 2 +- app/models/log.rb | 5 - app/models/sales_log.rb | 2 +- .../exports/lettings_log_export_service.rb | 1 - ...0101500_create_duplicate_log_references.rb | 11 -- .../20240118183843_add_duplicate_set_id.rb | 6 + db/schema.rb | 14 +- lib/tasks/set_duplicate_references.rake | 10 +- spec/factories/duplicate_log_reference.rb | 9 -- spec/features/form/form_navigation_spec.rb | 19 ++- spec/features/lettings_log_spec.rb | 37 ++++-- spec/features/sales_log_spec.rb | 40 +++++- spec/fixtures/exports/general_needs_log.xml | 2 +- .../exports/general_needs_log_23_24.xml | 2 +- .../exports/supported_housing_logs.xml | 2 +- .../tasks/set_duplicate_references_spec.rb | 123 +++++------------- spec/models/duplicate_log_reference_spec.rb | 89 ------------- spec/requests/form_controller_spec.rb | 28 ++-- .../csv/lettings_log_csv_service_spec.rb | 4 +- .../csv/sales_log_csv_service_spec.rb | 4 +- .../lettings_log_export_service_spec.rb | 6 +- 24 files changed, 168 insertions(+), 303 deletions(-) delete mode 100644 app/models/duplicate_log_reference.rb delete mode 100644 db/migrate/20240110101500_create_duplicate_log_references.rb create mode 100644 db/migrate/20240118183843_add_duplicate_set_id.rb delete mode 100644 spec/factories/duplicate_log_reference.rb delete mode 100644 spec/models/duplicate_log_reference_spec.rb diff --git a/app/controllers/delete_logs_controller.rb b/app/controllers/delete_logs_controller.rb index fd3a0ee3b..23579ed6b 100644 --- a/app/controllers/delete_logs_controller.rb +++ b/app/controllers/delete_logs_controller.rb @@ -28,9 +28,9 @@ class DeleteLogsController < ApplicationController discard logs if request.referer&.include?("delete-duplicates") logs.each do |log| - log.duplicate_log_references.destroy_all + log.update!(duplicate_set_id: nil) end - LettingsLog.find(params["remaining_log_id"]).duplicate_log_references.destroy_all + LettingsLog.find(params["remaining_log_id"]).update!(duplicate_set_id: nil) redirect_to lettings_log_duplicate_logs_path(lettings_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 @@ -62,9 +62,9 @@ class DeleteLogsController < ApplicationController discard logs if request.referer&.include?("delete-duplicates") logs.each do |log| - log.duplicate_log_references.destroy_all + log.update!(duplicate_set_id: nil) end - SalesLog.find(params["remaining_log_id"]).duplicate_log_references.destroy_all + SalesLog.find(params["remaining_log_id"]).update!(duplicate_set_id: nil) 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 diff --git a/app/controllers/form_controller.rb b/app/controllers/form_controller.rb index 4733fbd49..965464f35 100644 --- a/app/controllers/form_controller.rb +++ b/app/controllers/form_controller.rb @@ -175,12 +175,12 @@ private 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: @log.class.name) + @log.update!(duplicate_set_id: new_duplicate_set_id) if @log.duplicate_set_id.blank? dynamic_duplicates.each do |duplicate| - DuplicateLogReference.find_or_create_by!(log_id: duplicate.id, log_type: @log.class.name, duplicate_set_id: duplicate_log_reference.duplicate_set_id) + duplicate.update!(duplicate_set_id: @log.duplicate_set_id) if duplicate.duplicate_set_id != @log.duplicate_set_id end - return send("#{@log.class.name.underscore}_duplicate_logs_path", @log, original_log_id: @log.id) end + return send("#{@log.class.name.underscore}_duplicate_logs_path", @log, original_log_id: @log.id) end end @@ -257,12 +257,12 @@ private if original_log.present? && current_user.send(class_name.pluralize).duplicate_logs(original_log).count.positive? unless current_user.send(class_name.pluralize).duplicate_logs(@log).count.positive? - remove_fixed_duplicate_log_references(@log) + remove_fixed_duplicate_set_ids(@log) flash[:notice] = deduplication_success_banner end send("#{class_name}_duplicate_logs_path", original_log, original_log_id: original_log.id, referrer: params[:referrer], organisation_id: params[:organisation_id]) else - remove_fixed_duplicate_log_references(original_log) + remove_fixed_duplicate_set_ids(original_log) flash[:notice] = deduplication_success_banner send("#{class_name}_duplicate_logs_path", "#{class_name}_id".to_sym => from_referrer_query("first_remaining_duplicate_id"), original_log_id: from_referrer_query("original_log_id"), referrer: params[:referrer], organisation_id: params[:organisation_id]) end @@ -284,12 +284,19 @@ private I18n.t("notification.duplicate_logs.deduplication_success_banner", log_link: deduplicated_log_link, changed_question_label:).html_safe end - def remove_fixed_duplicate_log_references(log) - duplicate_log_reference = DuplicateLogReference.find_by(log_id: log.id, log_type: log.class.name) - return unless duplicate_log_reference + def remove_fixed_duplicate_set_ids(log) + duplicate_set_id = log.duplicate_set_id + return unless duplicate_set_id - duplicate_set_id = duplicate_log_reference.duplicate_set_id - duplicate_log_reference.destroy! if duplicate_log_reference.present? - DuplicateLogReference.find_by(duplicate_set_id:).destroy! if DuplicateLogReference.where(duplicate_set_id:).count == 1 + log.update!(duplicate_set_id: nil) + LettingsLog.find_by(duplicate_set_id:)&.update!(duplicate_set_id: nil) if log.lettings? && LettingsLog.where(duplicate_set_id:).count == 1 + SalesLog.find_by(duplicate_set_id:)&.update!(duplicate_set_id: nil) if log.sales? && SalesLog.where(duplicate_set_id:).count == 1 + end + + def new_duplicate_set_id + loop do + duplicate_set_id = SecureRandom.random_number(1_000_000) + return duplicate_set_id unless LettingsLog.exists?(duplicate_set_id:) + end end end diff --git a/app/models/duplicate_log_reference.rb b/app/models/duplicate_log_reference.rb deleted file mode 100644 index a14347959..000000000 --- a/app/models/duplicate_log_reference.rb +++ /dev/null @@ -1,18 +0,0 @@ -class DuplicateLogReference < ApplicationRecord - belongs_to :log, polymorphic: true - - before_create :set_default_duplicate_set_id - -private - - def set_default_duplicate_set_id - self.duplicate_set_id ||= generate_new_id - end - - def generate_new_id - loop do - duplicate_set_id = SecureRandom.random_number(1_000_000) - return duplicate_set_id unless DuplicateLogReference.exists?(duplicate_set_id:) - end - end -end diff --git a/app/models/lettings_log.rb b/app/models/lettings_log.rb index 28407cf28..b3ae36def 100644 --- a/app/models/lettings_log.rb +++ b/app/models/lettings_log.rb @@ -646,7 +646,7 @@ class LettingsLog < Log end def duplicates - LettingsLog.joins(:duplicate_log_references).where(duplicate_log_references: { duplicate_set_id: duplicate_log_references&.first&.duplicate_set_id }).where.not(id:) + LettingsLog.where.not(duplicate_set_id: nil).where(duplicate_set_id:).where.not(id:) end private diff --git a/app/models/log.rb b/app/models/log.rb index cccdf2fbb..8814e771d 100644 --- a/app/models/log.rb +++ b/app/models/log.rb @@ -7,7 +7,6 @@ class Log < ApplicationRecord belongs_to :created_by, class_name: "User", optional: true belongs_to :updated_by, class_name: "User", optional: true belongs_to :bulk_upload, optional: true - has_many :duplicate_log_references, as: :log before_save :update_status! @@ -210,10 +209,6 @@ class Log < ApplicationRecord end end - def duplicate_set_id - duplicate_log_references.first&.duplicate_set_id - end - private # Handle logs that are older than previous collection start date diff --git a/app/models/sales_log.rb b/app/models/sales_log.rb index eea3d60f6..486dcc78c 100644 --- a/app/models/sales_log.rb +++ b/app/models/sales_log.rb @@ -458,6 +458,6 @@ class SalesLog < Log end def duplicates - SalesLog.joins(:duplicate_log_references).where(duplicate_log_references: { duplicate_set_id: duplicate_log_references&.first&.duplicate_set_id }).where.not(id:) + SalesLog.where.not(duplicate_set_id: nil).where(duplicate_set_id:).where.not(id:) end end diff --git a/app/services/exports/lettings_log_export_service.rb b/app/services/exports/lettings_log_export_service.rb index 6cea0824b..5cc7cac00 100644 --- a/app/services/exports/lettings_log_export_service.rb +++ b/app/services/exports/lettings_log_export_service.rb @@ -226,7 +226,6 @@ module Exports attribute_hash["relat#{index}"] = "R" attribute_hash["ecstat#{index}"] = 10 end - attribute_hash["duplicate_set_id"] = lettings_log.duplicate_set_id attribute_hash end diff --git a/db/migrate/20240110101500_create_duplicate_log_references.rb b/db/migrate/20240110101500_create_duplicate_log_references.rb deleted file mode 100644 index d12793c63..000000000 --- a/db/migrate/20240110101500_create_duplicate_log_references.rb +++ /dev/null @@ -1,11 +0,0 @@ -class CreateDuplicateLogReferences < ActiveRecord::Migration[7.0] - def change - create_table :duplicate_log_references do |t| - t.integer :duplicate_set_id - t.integer :log_id - t.string :log_type - - t.timestamps - end - end -end diff --git a/db/migrate/20240118183843_add_duplicate_set_id.rb b/db/migrate/20240118183843_add_duplicate_set_id.rb new file mode 100644 index 000000000..6d58ebd00 --- /dev/null +++ b/db/migrate/20240118183843_add_duplicate_set_id.rb @@ -0,0 +1,6 @@ +class AddDuplicateSetId < ActiveRecord::Migration[7.0] + def change + add_column :lettings_logs, :duplicate_set_id, :integer + add_column :sales_logs, :duplicate_set_id, :integer + end +end diff --git a/db/schema.rb b/db/schema.rb index 242205d2c..f12d36ced 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.0].define(version: 2024_01_10_101500) do +ActiveRecord::Schema[7.0].define(version: 2024_01_18_183843) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -63,14 +63,6 @@ ActiveRecord::Schema[7.0].define(version: 2024_01_10_101500) do t.index ["organisation_id"], name: "index_data_protection_confirmations_on_organisation_id" end - create_table "duplicate_log_references", force: :cascade do |t| - t.integer "duplicate_set_id" - t.integer "log_id" - t.string "log_type" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - end - create_table "la_rent_ranges", force: :cascade do |t| t.integer "ranges_rent_id" t.integer "lettype" @@ -310,6 +302,7 @@ ActiveRecord::Schema[7.0].define(version: 2024_01_10_101500) do t.integer "supcharg_value_check" t.integer "scharge_value_check" t.integer "pscharge_value_check" + t.integer "duplicate_set_id" t.index ["bulk_upload_id"], name: "index_lettings_logs_on_bulk_upload_id" t.index ["created_by_id"], name: "index_lettings_logs_on_created_by_id" t.index ["location_id"], name: "index_lettings_logs_on_location_id" @@ -471,6 +464,8 @@ ActiveRecord::Schema[7.0].define(version: 2024_01_10_101500) do t.string "reader_type", null: false t.bigint "reader_id" t.datetime "timestamp", precision: nil, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.index ["readable_type", "readable_id"], name: "index_read_marks_on_readable_type_and_readable_id" t.index ["reader_id", "reader_type", "readable_type", "readable_id"], name: "read_marks_reader_readable_index", unique: true t.index ["reader_type", "reader_id"], name: "index_read_marks_on_reader_type_and_reader_id" @@ -656,6 +651,7 @@ ActiveRecord::Schema[7.0].define(version: 2024_01_10_101500) do t.integer "old_form_id" t.datetime "values_updated_at" t.bigint "managing_organisation_id" + t.integer "duplicate_set_id" t.index ["bulk_upload_id"], name: "index_sales_logs_on_bulk_upload_id" t.index ["created_by_id"], name: "index_sales_logs_on_created_by_id" t.index ["managing_organisation_id"], name: "index_sales_logs_on_managing_organisation_id" diff --git a/lib/tasks/set_duplicate_references.rake b/lib/tasks/set_duplicate_references.rake index cf3d1932b..fb01c3950 100644 --- a/lib/tasks/set_duplicate_references.rake +++ b/lib/tasks/set_duplicate_references.rake @@ -2,19 +2,19 @@ desc "Set duplicate references for sales and lettings logs" task set_duplicate_references: :environment do SalesLog.filter_by_year(2023).duplicate_sets.each do |duplicate_set| duplicate_set_id = generate_new_duplicate_set_id - next if duplicate_set.any? { |log_id| DuplicateLogReference.exists?(log_id:, log_type: "SalesLog") } + next if duplicate_set.any? { |_log_id| SalesLog.exists?(duplicate_set_id:) } duplicate_set.each do |log_id| - DuplicateLogReference.create(log_id:, log_type: "SalesLog", duplicate_set_id:) + SalesLog.find(log_id).update!(duplicate_set_id:) end end LettingsLog.filter_by_year(2023).duplicate_sets.each do |duplicate_set| duplicate_set_id = generate_new_duplicate_set_id - next if duplicate_set.any? { |log_id| DuplicateLogReference.exists?(log_id:, log_type: "LettingsLog") } + next if duplicate_set.any? { |_log_id| LettingsLog.exists?(duplicate_set_id:) } duplicate_set.each do |log_id| - DuplicateLogReference.create(log_id:, log_type: "LettingsLog", duplicate_set_id:) + LettingsLog.find(log_id).update!(duplicate_set_id:) end end end @@ -22,6 +22,6 @@ end def generate_new_duplicate_set_id loop do duplicate_set_id = SecureRandom.random_number(1_000_000) - return duplicate_set_id unless DuplicateLogReference.exists?(duplicate_set_id:) + return duplicate_set_id unless LettingsLog.exists?(duplicate_set_id:) end end diff --git a/spec/factories/duplicate_log_reference.rb b/spec/factories/duplicate_log_reference.rb deleted file mode 100644 index bb5a5c3dd..000000000 --- a/spec/factories/duplicate_log_reference.rb +++ /dev/null @@ -1,9 +0,0 @@ -FactoryBot.define do - factory :duplicate_log_reference do - log_id { 1 } - log_type { "SalesLog" } - duplicate_set_id { nil } - created_at { Time.zone.today } - updated_at { Time.zone.today } - end -end diff --git a/spec/features/form/form_navigation_spec.rb b/spec/features/form/form_navigation_spec.rb index 3ac0328f1..256b16d74 100644 --- a/spec/features/form/form_navigation_spec.rb +++ b/spec/features/form/form_navigation_spec.rb @@ -178,28 +178,25 @@ RSpec.describe "Form Navigation" do end describe "fixing duplicate logs" do - let(:lettings_log) { create(:lettings_log, :duplicate, created_by: user) } - let(:second_log) { create(:lettings_log, :duplicate, created_by: user) } - - before do - create(:duplicate_log_reference, log_id: id, log_type: "LettingsLog") - create(:duplicate_log_reference, log_id: second_log.id, log_type: "LettingsLog") - end + let!(:lettings_log) { create(:lettings_log, :duplicate, created_by: user, duplicate_set_id: 1) } + let!(:second_log) { create(:lettings_log, :duplicate, created_by: user, duplicate_set_id: 1) } it "shows a correct cancel link" do - expect(DuplicateLogReference.count).to eq(2) + expect(lettings_log.duplicates.count).to eq(1) visit("lettings-logs/#{id}/tenant-code-test?first_remaining_duplicate_id=#{second_log.id}&original_log_id=#{id}&referrer=duplicate_logs") click_link(text: "Cancel") expect(page).to have_current_path("/lettings-logs/#{id}/duplicate-logs?original_log_id=#{id}") - expect(DuplicateLogReference.count).to eq(2) + lettings_log.reload + expect(lettings_log.duplicates.count).to eq(1) end it "shows a correct Save Changes buttons" do - expect(DuplicateLogReference.count).to eq(2) + expect(lettings_log.duplicates.count).to eq(1) visit("lettings-logs/#{id}/tenant-code-test?first_remaining_duplicate_id=#{id}&original_log_id=#{id}&referrer=duplicate_logs") click_button(text: "Save changes") expect(page).to have_current_path("/lettings-logs/#{id}/duplicate-logs?original_log_id=#{id}&referrer=duplicate_logs") - expect(DuplicateLogReference.count).to eq(2) + lettings_log.reload + expect(lettings_log.duplicates.count).to eq(1) end end end diff --git a/spec/features/lettings_log_spec.rb b/spec/features/lettings_log_spec.rb index cb3e74449..f5aefb6e4 100644 --- a/spec/features/lettings_log_spec.rb +++ b/spec/features/lettings_log_spec.rb @@ -459,9 +459,11 @@ RSpec.describe "Lettings Log Features" do end it "allows keeping the original log and deleting duplicates" do - expect(DuplicateLogReference.count).to eq(2) lettings_log.reload + duplicate_log.reload expect(lettings_log.duplicates.count).to eq(1) + expect(lettings_log.duplicate_set_id).not_to be_nil + expect(duplicate_log.duplicate_set_id).not_to be_nil expect(lettings_log.duplicates).to include(duplicate_log) expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/duplicate-logs?original_log_id=#{lettings_log.id}") @@ -477,8 +479,13 @@ RSpec.describe "Lettings Log Features" do expect(page).not_to have_link("Keep this log and delete duplicates") expect(page).to have_link("Back to Log #{lettings_log.id}", href: "/lettings-logs/#{lettings_log.id}") - expect(DuplicateLogReference.count).to eq(0) + lettings_log.reload + duplicate_log.reload + expect(lettings_log.duplicates.count).to eq(0) + expect(duplicate_log.duplicates.count).to eq(0) + expect(lettings_log.duplicate_set_id).to be_nil + expect(duplicate_log.duplicate_set_id).to be_nil end it "allows changing answers on remaining original log" do @@ -491,9 +498,11 @@ RSpec.describe "Lettings Log Features" do end it "allows keeping the duplicate log and deleting the original one" do - expect(DuplicateLogReference.count).to eq(2) + lettings_log.reload duplicate_log.reload - expect(duplicate_log.duplicates.count).to eq(1) + expect(lettings_log.duplicates.count).to eq(1) + expect(lettings_log.duplicate_set_id).not_to be_nil + expect(duplicate_log.duplicate_set_id).not_to be_nil expect(duplicate_log.duplicates).to include(lettings_log) expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/duplicate-logs?original_log_id=#{lettings_log.id}") @@ -509,8 +518,13 @@ RSpec.describe "Lettings Log Features" do expect(page).not_to have_link("Keep this log and delete duplicates") expect(page).to have_link("Back to lettings logs", href: "/lettings-logs") - expect(DuplicateLogReference.count).to eq(0) + lettings_log.reload + duplicate_log.reload + + expect(lettings_log.duplicates.count).to eq(0) expect(duplicate_log.duplicates.count).to eq(0) + expect(lettings_log.duplicate_set_id).to be_nil + expect(duplicate_log.duplicate_set_id).to be_nil end it "allows changing answers to remaining duplicate log" do @@ -523,9 +537,11 @@ RSpec.describe "Lettings Log Features" do end it "allows deduplicating logs by changing the answers on the duplicate log" do - expect(DuplicateLogReference.count).to eq(2) lettings_log.reload + duplicate_log.reload expect(lettings_log.duplicates.count).to eq(1) + expect(lettings_log.duplicate_set_id).not_to be_nil + expect(duplicate_log.duplicate_set_id).not_to be_nil expect(lettings_log.duplicates).to include(duplicate_log) expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/duplicate-logs?original_log_id=#{lettings_log.id}") @@ -538,8 +554,13 @@ RSpec.describe "Lettings Log Features" do 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 tenant code.") - expect(DuplicateLogReference.count).to eq(0) + lettings_log.reload + duplicate_log.reload + + expect(lettings_log.duplicates.count).to eq(0) expect(duplicate_log.duplicates.count).to eq(0) + expect(lettings_log.duplicate_set_id).to be_nil + expect(duplicate_log.duplicate_set_id).to be_nil end it "allows deduplicating logs by changing the answers on the original log" do @@ -551,8 +572,8 @@ RSpec.describe "Lettings Log Features" do expect(page).to have_css(".govuk-notification-banner.govuk-notification-banner--success") expect(page).to have_content("Log #{lettings_log.id} is no longer a duplicate and has been removed from the list") expect(page).to have_content("You changed the tenant code.") - expect(DuplicateLogReference.count).to eq(0) expect(duplicate_log.duplicates.count).to eq(0) + expect(duplicate_log.duplicate_set_id).to be_nil end end end diff --git a/spec/features/sales_log_spec.rb b/spec/features/sales_log_spec.rb index 3bfaf3705..83fd2f458 100644 --- a/spec/features/sales_log_spec.rb +++ b/spec/features/sales_log_spec.rb @@ -198,9 +198,12 @@ 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 + duplicate_log.reload expect(sales_log.duplicates.count).to eq(1) + expect(duplicate_log.duplicates.count).to eq(1) + expect(sales_log.duplicate_set_id).not_to be_nil + expect(duplicate_log.duplicate_set_id).not_to be_nil 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}") @@ -216,8 +219,13 @@ RSpec.describe "Sales Log Features" do 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) + sales_log.reload + duplicate_log.reload + expect(sales_log.duplicates.count).to eq(0) + expect(duplicate_log.duplicates.count).to eq(0) + expect(sales_log.duplicate_set_id).to be_nil + expect(duplicate_log.duplicate_set_id).to be_nil end it "allows changing answer on remaining original log" do @@ -230,9 +238,12 @@ 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) + sales_log.reload duplicate_log.reload + expect(sales_log.duplicates.count).to eq(1) expect(duplicate_log.duplicates.count).to eq(1) + expect(sales_log.duplicate_set_id).not_to be_nil + expect(duplicate_log.duplicate_set_id).not_to be_nil 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}") @@ -248,8 +259,13 @@ RSpec.describe "Sales Log Features" do 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) + sales_log.reload + duplicate_log.reload + + expect(sales_log.duplicates.count).to eq(0) expect(duplicate_log.duplicates.count).to eq(0) + expect(sales_log.duplicate_set_id).to be_nil + expect(duplicate_log.duplicate_set_id).to be_nil end it "allows changing answers on remaining duplicate log" do @@ -262,9 +278,12 @@ 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 + duplicate_log.reload expect(sales_log.duplicates.count).to eq(1) + expect(duplicate_log.duplicates.count).to eq(1) + expect(sales_log.duplicate_set_id).not_to be_nil + expect(duplicate_log.duplicate_set_id).not_to be_nil 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}") @@ -277,8 +296,13 @@ RSpec.describe "Sales Log Features" do 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) + sales_log.reload + duplicate_log.reload + + expect(sales_log.duplicates.count).to eq(0) expect(duplicate_log.duplicates.count).to eq(0) + expect(sales_log.duplicate_set_id).to be_nil + expect(duplicate_log.duplicate_set_id).to be_nil end it "allows deduplicating logs by changing the answers on the original log" do @@ -291,8 +315,10 @@ RSpec.describe "Sales Log Features" do 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(sales_log.duplicates.count).to eq(0) expect(duplicate_log.duplicates.count).to eq(0) + expect(sales_log.duplicate_set_id).to be_nil + expect(duplicate_log.duplicate_set_id).to be_nil end end end diff --git a/spec/fixtures/exports/general_needs_log.xml b/spec/fixtures/exports/general_needs_log.xml index 1a0ed7197..f1f6a2723 100644 --- a/spec/fixtures/exports/general_needs_log.xml +++ b/spec/fixtures/exports/general_needs_log.xml @@ -144,6 +144,7 @@ 1 + {id} {owning_org_id} DLUHC @@ -156,7 +157,6 @@ {log_id} test1@example.com - 1 diff --git a/spec/fixtures/exports/general_needs_log_23_24.xml b/spec/fixtures/exports/general_needs_log_23_24.xml index 3efc705cd..19f6c8c79 100644 --- a/spec/fixtures/exports/general_needs_log_23_24.xml +++ b/spec/fixtures/exports/general_needs_log_23_24.xml @@ -145,6 +145,7 @@ 1 + {id} {owning_org_id} DLUHC @@ -157,7 +158,6 @@ {log_id} test1@example.com - 1 diff --git a/spec/fixtures/exports/supported_housing_logs.xml b/spec/fixtures/exports/supported_housing_logs.xml index eb91ac60c..018c158b0 100644 --- a/spec/fixtures/exports/supported_housing_logs.xml +++ b/spec/fixtures/exports/supported_housing_logs.xml @@ -143,6 +143,7 @@ 1 + {id} {owning_org_id} DLUHC @@ -172,7 +173,6 @@ 20 {location_id} active - 1 diff --git a/spec/lib/tasks/set_duplicate_references_spec.rb b/spec/lib/tasks/set_duplicate_references_spec.rb index 9d763ebf8..3346caa3e 100644 --- a/spec/lib/tasks/set_duplicate_references_spec.rb +++ b/spec/lib/tasks/set_duplicate_references_spec.rb @@ -20,15 +20,14 @@ RSpec.describe "set_duplicate_references" do let!(:sales_log_without_duplicates) { create(:sales_log, created_by: user) } it "creates duplicate references for sales logs" do - expect(DuplicateLogReference.count).to eq(0) expect(sales_log.duplicates.count).to eq(0) - expect(sales_log.duplicate_log_references).to be_empty + expect(sales_log.duplicate_set_id).to be_nil expect(duplicate_sales_log.duplicates.count).to eq(0) - expect(duplicate_sales_log.duplicate_log_references).to be_empty + expect(duplicate_sales_log.duplicate_set_id).to be_nil expect(second_duplicate_sales_log.duplicates.count).to eq(0) - expect(second_duplicate_sales_log.duplicate_log_references).to be_empty + expect(second_duplicate_sales_log.duplicate_set_id).to be_nil expect(sales_log_without_duplicates.duplicates.count).to eq(0) - expect(sales_log_without_duplicates.duplicate_log_references).to be_empty + expect(sales_log_without_duplicates.duplicate_set_id).to be_nil task.invoke sales_log.reload @@ -36,32 +35,13 @@ RSpec.describe "set_duplicate_references" do second_duplicate_sales_log.reload sales_log_without_duplicates.reload - expect(DuplicateLogReference.count).to eq(3) expect(sales_log.duplicates.count).to eq(2) - expect(sales_log.duplicate_log_references.count).to eq(1) expect(duplicate_sales_log.duplicates.count).to eq(2) - expect(duplicate_sales_log.duplicate_log_references.count).to eq(1) expect(second_duplicate_sales_log.duplicates.count).to eq(2) - expect(second_duplicate_sales_log.duplicate_log_references.count).to eq(1) expect(sales_log_without_duplicates.duplicates.count).to eq(0) - expect(sales_log_without_duplicates.duplicate_log_references).to be_empty - expect(sales_log.duplicate_log_references.count).to eq(1) expect(sales_log.duplicate_set_id).to eq(duplicate_sales_log.duplicate_set_id) expect(sales_log.duplicate_set_id).to eq(second_duplicate_sales_log.duplicate_set_id) end - - it "does not create the references twice" do - expect(DuplicateLogReference.count).to eq(0) - - task.invoke - - expect(DuplicateLogReference.count).to eq(3) - - task.reenable - task.invoke - - expect(DuplicateLogReference.count).to eq(3) - end end context "and there are sales duplicates in multiple organisations" do @@ -75,41 +55,35 @@ RSpec.describe "set_duplicate_references" do let!(:other_sales_log_without_duplicates) { create(:sales_log, created_by: other_user) } it "creates separate duplicate references for sales logs" do - expect(DuplicateLogReference.count).to eq(0) expect(sales_log.duplicates.count).to eq(0) - expect(sales_log.duplicate_log_references).to be_empty + expect(sales_log.duplicate_set_id).to be_nil expect(duplicate_sales_log.duplicates.count).to eq(0) - expect(duplicate_sales_log.duplicate_log_references).to be_empty + expect(duplicate_sales_log.duplicate_set_id).to be_nil expect(sales_log_without_duplicates.duplicates.count).to eq(0) - expect(sales_log_without_duplicates.duplicate_log_references).to be_empty + expect(sales_log_without_duplicates.duplicate_set_id).to be_nil expect(other_sales_log.duplicates.count).to eq(0) - expect(other_sales_log.duplicate_log_references).to be_empty + expect(other_sales_log.duplicate_set_id).to be_nil expect(other_duplicate_sales_log.duplicates.count).to eq(0) - expect(other_duplicate_sales_log.duplicate_log_references).to be_empty + expect(other_duplicate_sales_log.duplicate_set_id).to be_nil expect(other_sales_log_without_duplicates.duplicates.count).to eq(0) - expect(other_sales_log_without_duplicates.duplicate_log_references).to be_empty + expect(other_sales_log_without_duplicates.duplicate_set_id).to be_nil task.invoke sales_log.reload duplicate_sales_log.reload sales_log_without_duplicates.reload + other_sales_log.reload + other_duplicate_sales_log.reload - expect(DuplicateLogReference.count).to eq(4) expect(sales_log.duplicates.count).to eq(1) - expect(sales_log.duplicate_log_references.count).to eq(1) expect(duplicate_sales_log.duplicates.count).to eq(1) - expect(duplicate_sales_log.duplicate_log_references.count).to eq(1) expect(sales_log_without_duplicates.duplicates.count).to eq(0) - expect(sales_log_without_duplicates.duplicate_log_references).to be_empty expect(sales_log.duplicate_set_id).to eq(duplicate_sales_log.duplicate_set_id) expect(other_sales_log.duplicates.count).to eq(1) - expect(other_sales_log.duplicate_log_references.count).to eq(1) expect(other_duplicate_sales_log.duplicates.count).to eq(1) - expect(other_duplicate_sales_log.duplicate_log_references.count).to eq(1) expect(other_sales_log_without_duplicates.duplicates.count).to eq(0) - expect(other_sales_log_without_duplicates.duplicate_log_references).to be_empty expect(other_sales_log.duplicate_set_id).to eq(other_duplicate_sales_log.duplicate_set_id) expect(other_sales_log.duplicate_set_id).not_to eq(sales_log.duplicate_set_id) end @@ -128,21 +102,19 @@ RSpec.describe "set_duplicate_references" do end it "does not create duplicate references for sales logs" do - expect(DuplicateLogReference.count).to eq(0) expect(sales_log.duplicates.count).to eq(0) - expect(sales_log.duplicate_log_references).to be_empty + expect(sales_log.duplicate_set_id).to be_nil expect(duplicate_sales_log.duplicates.count).to eq(0) - expect(duplicate_sales_log.duplicate_log_references).to be_empty + expect(duplicate_sales_log.duplicate_set_id).to be_nil task.invoke sales_log.reload duplicate_sales_log.reload - expect(DuplicateLogReference.count).to eq(0) expect(sales_log.duplicates.count).to eq(0) - expect(sales_log.duplicate_log_references).to be_empty + expect(sales_log.duplicate_set_id).to be_nil expect(duplicate_sales_log.duplicates.count).to eq(0) - expect(duplicate_sales_log.duplicate_log_references).to be_empty + expect(duplicate_sales_log.duplicate_set_id).to be_nil end end @@ -154,15 +126,14 @@ RSpec.describe "set_duplicate_references" do let!(:lettings_log_without_duplicates) { create(:lettings_log, created_by: user) } it "creates duplicate references for lettings logs" do - expect(DuplicateLogReference.count).to eq(0) expect(lettings_log.duplicates.count).to eq(0) - expect(lettings_log.duplicate_log_references).to be_empty + expect(lettings_log.duplicate_set_id).to be_nil expect(duplicate_lettings_log.duplicates.count).to eq(0) - expect(duplicate_lettings_log.duplicate_log_references).to be_empty + expect(duplicate_lettings_log.duplicate_set_id).to be_nil expect(second_duplicate_lettings_log.duplicates.count).to eq(0) - expect(second_duplicate_lettings_log.duplicate_log_references).to be_empty + expect(second_duplicate_lettings_log.duplicate_set_id).to be_nil expect(lettings_log_without_duplicates.duplicates.count).to eq(0) - expect(lettings_log_without_duplicates.duplicate_log_references).to be_empty + expect(lettings_log_without_duplicates.duplicate_set_id).to be_nil task.invoke lettings_log.reload @@ -170,32 +141,14 @@ RSpec.describe "set_duplicate_references" do second_duplicate_lettings_log.reload lettings_log_without_duplicates.reload - expect(DuplicateLogReference.count).to eq(3) expect(lettings_log.duplicates.count).to eq(2) - expect(lettings_log.duplicate_log_references.count).to eq(1) expect(duplicate_lettings_log.duplicates.count).to eq(2) - expect(duplicate_lettings_log.duplicate_log_references.count).to eq(1) expect(second_duplicate_lettings_log.duplicates.count).to eq(2) - expect(second_duplicate_lettings_log.duplicate_log_references.count).to eq(1) expect(lettings_log_without_duplicates.duplicates.count).to eq(0) - expect(lettings_log_without_duplicates.duplicate_log_references).to be_empty - expect(lettings_log.duplicate_log_references.count).to eq(1) + expect(lettings_log_without_duplicates.duplicate_set_id).to be_nil expect(lettings_log.duplicate_set_id).to eq(duplicate_lettings_log.duplicate_set_id) expect(lettings_log.duplicate_set_id).to eq(second_duplicate_lettings_log.duplicate_set_id) end - - it "does not create the references twice" do - expect(DuplicateLogReference.count).to eq(0) - - task.invoke - - expect(DuplicateLogReference.count).to eq(3) - - task.reenable - task.invoke - - expect(DuplicateLogReference.count).to eq(3) - end end context "and there are lettings duplicates in multiple organisations" do @@ -209,41 +162,37 @@ RSpec.describe "set_duplicate_references" do let!(:other_lettings_log_without_duplicates) { create(:lettings_log, created_by: other_user) } it "creates separate duplicate references for lettings logs" do - expect(DuplicateLogReference.count).to eq(0) expect(lettings_log.duplicates.count).to eq(0) - expect(lettings_log.duplicate_log_references).to be_empty + expect(lettings_log.duplicate_set_id).to be_nil expect(duplicate_lettings_log.duplicates.count).to eq(0) - expect(duplicate_lettings_log.duplicate_log_references).to be_empty + expect(duplicate_lettings_log.duplicate_set_id).to be_nil expect(lettings_log_without_duplicates.duplicates.count).to eq(0) - expect(lettings_log_without_duplicates.duplicate_log_references).to be_empty + expect(lettings_log_without_duplicates.duplicate_set_id).to be_nil expect(other_lettings_log.duplicates.count).to eq(0) - expect(other_lettings_log.duplicate_log_references).to be_empty + expect(other_lettings_log.duplicate_set_id).to be_nil expect(other_duplicate_lettings_log.duplicates.count).to eq(0) - expect(other_duplicate_lettings_log.duplicate_log_references).to be_empty + expect(other_duplicate_lettings_log.duplicate_set_id).to be_nil expect(other_lettings_log_without_duplicates.duplicates.count).to eq(0) - expect(other_lettings_log_without_duplicates.duplicate_log_references).to be_empty + expect(other_lettings_log_without_duplicates.duplicate_set_id).to be_nil task.invoke lettings_log.reload duplicate_lettings_log.reload lettings_log_without_duplicates.reload + other_lettings_log.reload + other_duplicate_lettings_log.reload - expect(DuplicateLogReference.count).to eq(4) expect(lettings_log.duplicates.count).to eq(1) - expect(lettings_log.duplicate_log_references.count).to eq(1) expect(duplicate_lettings_log.duplicates.count).to eq(1) - expect(duplicate_lettings_log.duplicate_log_references.count).to eq(1) expect(lettings_log_without_duplicates.duplicates.count).to eq(0) - expect(lettings_log_without_duplicates.duplicate_log_references).to be_empty + expect(lettings_log_without_duplicates.duplicate_set_id).to be_nil expect(lettings_log.duplicate_set_id).to eq(duplicate_lettings_log.duplicate_set_id) expect(other_lettings_log.duplicates.count).to eq(1) - expect(other_lettings_log.duplicate_log_references.count).to eq(1) expect(other_duplicate_lettings_log.duplicates.count).to eq(1) - expect(other_duplicate_lettings_log.duplicate_log_references.count).to eq(1) expect(other_lettings_log_without_duplicates.duplicates.count).to eq(0) - expect(other_lettings_log_without_duplicates.duplicate_log_references).to be_empty + expect(other_lettings_log_without_duplicates.duplicate_set_id).to be_nil expect(other_lettings_log.duplicate_set_id).to eq(other_duplicate_lettings_log.duplicate_set_id) expect(other_lettings_log.duplicate_set_id).not_to eq(lettings_log.duplicate_set_id) end @@ -262,21 +211,19 @@ RSpec.describe "set_duplicate_references" do end it "does not create duplicate references for lettings logs" do - expect(DuplicateLogReference.count).to eq(0) expect(lettings_log.duplicates.count).to eq(0) - expect(lettings_log.duplicate_log_references).to be_empty + expect(lettings_log.duplicate_set_id).to be_nil expect(duplicate_lettings_log.duplicates.count).to eq(0) - expect(duplicate_lettings_log.duplicate_log_references).to be_empty + expect(duplicate_lettings_log.duplicate_set_id).to be_nil task.invoke lettings_log.reload duplicate_lettings_log.reload - expect(DuplicateLogReference.count).to eq(0) expect(lettings_log.duplicates.count).to eq(0) - expect(lettings_log.duplicate_log_references).to be_empty + expect(lettings_log.duplicate_set_id).to be_nil expect(duplicate_lettings_log.duplicates.count).to eq(0) - expect(duplicate_lettings_log.duplicate_log_references).to be_empty + expect(duplicate_lettings_log.duplicate_set_id).to be_nil end end end diff --git a/spec/models/duplicate_log_reference_spec.rb b/spec/models/duplicate_log_reference_spec.rb deleted file mode 100644 index bd149c99f..000000000 --- a/spec/models/duplicate_log_reference_spec.rb +++ /dev/null @@ -1,89 +0,0 @@ -require "rails_helper" - -RSpec.describe DuplicateLogReference, type: :model do - context "when adding a new duplicate log" do - context "and duplicate_set_id is not given" do - let(:sales_log) { create(:sales_log) } - - it "generates a new random duplicate_set_id" do - duplicate_log = described_class.create!(log_id: sales_log.id, log_type: "SalesLog") - expect(duplicate_log.duplicate_set_id).to be_a(Integer) - end - end - - context "and duplicate_set_id is given" do - let(:sales_log) { create(:sales_log) } - - it "adds correct duplicate_set_id" do - duplicate_log = described_class.create!(log_id: sales_log.id, log_type: "SalesLog", duplicate_set_id: 123_456) - expect(duplicate_log.duplicate_set_id).to eq(123_456) - end - end - - context "and log does not exist" do - it "raises an error" do - expect { described_class.create!(log_id: 1, log_type: "SalesLog") }.to raise_error(ActiveRecord::RecordInvalid) - end - end - - context "and log_type is invalid" do - let(:sales_log) { create(:sales_log) } - - it "raises an error" do - expect { described_class.create!(log_id: sales_log.id, log_type: "SomethingElse") }.to raise_error(NameError) - end - end - end - - context "when accessing all duplicates for a sales log" do - let(:sales_log) { create(:sales_log) } - - context "and there are no duplicates" do - it "returns an empty array" do - expect(sales_log.duplicates).to eq([]) - end - end - - context "and there are duplicates" do - let(:other_sales_log) { create(:sales_log) } - - before do - duplicate_log = described_class.create!(log_id: sales_log.id, log_type: "SalesLog") - described_class.create!(log_id: other_sales_log.id, log_type: "SalesLog", duplicate_set_id: duplicate_log.duplicate_set_id) - create(:sales_log) - create(:sales_log) - end - - it "returns the correct duplicates" do - expect(sales_log.duplicates.count).to eq(1) - expect(sales_log.duplicates).to include(other_sales_log) - end - end - end - - context "when accessing all duplicates for a lettings log" do - let(:lettings_log) { create(:lettings_log) } - - context "and there are no duplicates" do - it "returns an empty array" do - expect(lettings_log.duplicates).to eq([]) - end - end - - context "and there are duplicates" do - let(:other_lettings_log) { create(:lettings_log) } - - before do - duplicate_log = described_class.create!(log_id: lettings_log.id, log_type: "LettingsLog") - described_class.create!(log_id: other_lettings_log.id, log_type: "LettingsLog", duplicate_set_id: duplicate_log.duplicate_set_id) - create(:lettings_log) - create(:lettings_log) - end - - it "returns the correct duplicates" do - expect(lettings_log.duplicates.count).to eq(1) - expect(lettings_log.duplicates).to include(other_lettings_log) - end - end - end -end diff --git a/spec/requests/form_controller_spec.rb b/spec/requests/form_controller_spec.rb index 222ada048..54b52fc5a 100644 --- a/spec/requests/form_controller_spec.rb +++ b/spec/requests/form_controller_spec.rb @@ -685,7 +685,7 @@ RSpec.describe FormController, type: :request do end context "and duplicate logs" do - let(:duplicate_logs) { create_list(:sales_log, 2) } + let!(:duplicate_logs) { create_list(:sales_log, 2) } before do allow(SalesLog).to receive(:duplicate_logs).and_return(duplicate_logs) @@ -882,8 +882,8 @@ RSpec.describe FormController, type: :request do end context "when the question was accessed from a duplicate logs screen" do - let(:lettings_log) { create(:lettings_log, :duplicate, created_by: user) } - let(:duplicate_log) { create(:lettings_log, :duplicate, created_by: user) } + let(:lettings_log) { create(:lettings_log, :duplicate, created_by: user, duplicate_set_id: 1) } + let(:duplicate_log) { create(:lettings_log, :duplicate, created_by: user, duplicate_set_id: 1) } let(:referrer) { "/lettings-logs/#{lettings_log.id}/lead-tenant-age?referrer=duplicate_logs&first_remaining_duplicate_id=#{duplicate_log.id}&original_log_id=#{lettings_log.id}" } let(:params) do { @@ -897,14 +897,13 @@ RSpec.describe FormController, type: :request do end before do - duplicate_set_id = create(:duplicate_log_reference, log_id: lettings_log.id, log_type: "LettingsLog").duplicate_set_id - create(:duplicate_log_reference, log_id: duplicate_log.id, log_type: "LettingsLog", duplicate_set_id:) post "/lettings-logs/#{lettings_log.id}/lead-tenant-age", params:, headers: headers.merge({ "HTTP_REFERER" => referrer }) end 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}") - expect(DuplicateLogReference.count).to eq(0) + expect(lettings_log.duplicates.count).to eq(0) + expect(duplicate_log.duplicates.count).to eq(0) end context "and the answer didn't change" do @@ -921,14 +920,15 @@ RSpec.describe FormController, type: :request do it "redirects back to the duplicates page for remaining duplicates" do expect(response).to redirect_to("/lettings-logs/#{lettings_log.id}/duplicate-logs?original_log_id=#{lettings_log.id}") - expect(DuplicateLogReference.count).to eq(2) + expect(lettings_log.duplicates.count).to eq(1) + expect(duplicate_log.duplicates.count).to eq(1) end end end context "when the sales question was accessed from a duplicate logs screen" do - let(:sales_log) { create(:sales_log, :duplicate, created_by: user) } - let(:duplicate_log) { create(:sales_log, :duplicate, created_by: user) } + let!(:sales_log) { create(:sales_log, :duplicate, created_by: user, duplicate_set_id: 1) } + let!(:duplicate_log) { create(:sales_log, :duplicate, created_by: user, duplicate_set_id: 1) } let(:referrer) { "/sales-logs/#{sales_log.id}/buyer-1-age?referrer=duplicate_logs&first_remaining_duplicate_id=#{duplicate_log.id}&original_log_id=#{sales_log.id}&referrer=duplicate_logs" } let(:params) do { @@ -942,14 +942,15 @@ RSpec.describe FormController, type: :request do end before do - duplicate_set_id = create(:duplicate_log_reference, log_id: sales_log.id, log_type: "SalesLog").duplicate_set_id - create(:duplicate_log_reference, log_id: duplicate_log.id, log_type: "SalesLog", duplicate_set_id:) post "/sales-logs/#{sales_log.id}/buyer-1-age", params:, headers: headers.merge({ "HTTP_REFERER" => referrer }) end 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}") - expect(DuplicateLogReference.count).to eq(0) + sales_log.reload + duplicate_log.reload + expect(sales_log.duplicates.count).to eq(0) + expect(duplicate_log.duplicates.count).to eq(0) end context "and the answer didn't change" do @@ -966,7 +967,8 @@ RSpec.describe FormController, type: :request do it "redirects back to the duplicates page for remaining duplicates" do expect(response).to redirect_to("/sales-logs/#{sales_log.id}/duplicate-logs?original_log_id=#{sales_log.id}") - expect(DuplicateLogReference.count).to eq(2) + expect(sales_log.duplicates.count).to eq(1) + expect(duplicate_log.duplicates.count).to eq(1) end end end diff --git a/spec/services/csv/lettings_log_csv_service_spec.rb b/spec/services/csv/lettings_log_csv_service_spec.rb index 8d88f471c..f3e180d51 100644 --- a/spec/services/csv/lettings_log_csv_service_spec.rb +++ b/spec/services/csv/lettings_log_csv_service_spec.rb @@ -171,7 +171,7 @@ RSpec.describe Csv::LettingsLogCsvService do context "when the log has a duplicate log reference" do before do - DuplicateLogReference.create!(log_id: log.id, log_type: "LettingsLog", duplicate_set_id: 12_312) + log.update!(duplicate_set_id: 12_312) end it "exports the id for under the heading 'duplicate_set_id'" do @@ -256,7 +256,7 @@ RSpec.describe Csv::LettingsLogCsvService do context "when the log has a duplicate log reference" do before do - DuplicateLogReference.create!(log_id: log.id, log_type: "LettingsLog", duplicate_set_id: 12_312) + log.update!(duplicate_set_id: 12_312) end it "exports the id for under the heading 'duplicate_set_id'" do diff --git a/spec/services/csv/sales_log_csv_service_spec.rb b/spec/services/csv/sales_log_csv_service_spec.rb index e60321365..f9f545c35 100644 --- a/spec/services/csv/sales_log_csv_service_spec.rb +++ b/spec/services/csv/sales_log_csv_service_spec.rb @@ -166,7 +166,7 @@ RSpec.describe Csv::SalesLogCsvService do context "when the log has a duplicate log reference" do before do - DuplicateLogReference.create!(log_id: log.id, log_type: "SalesLog", duplicate_set_id: 12_312) + log.update!(duplicate_set_id: 12_312) end it "exports the id for under the heading 'duplicate_set_id'" do @@ -226,7 +226,7 @@ RSpec.describe Csv::SalesLogCsvService do context "when the log has a duplicate log reference" do before do - DuplicateLogReference.create!(log_id: log.id, log_type: "SalesLog", duplicate_set_id: 12_312) + log.update!(duplicate_set_id: 12_312) end it "exports the id for under the heading 'duplicate_set_id'" do diff --git a/spec/services/exports/lettings_log_export_service_spec.rb b/spec/services/exports/lettings_log_export_service_spec.rb index 3134237ec..4e76364c4 100644 --- a/spec/services/exports/lettings_log_export_service_spec.rb +++ b/spec/services/exports/lettings_log_export_service_spec.rb @@ -415,11 +415,7 @@ RSpec.describe Exports::LettingsLogExportService do end context "and one lettings log with duplicate reference is available for export" do - let!(:lettings_log) { FactoryBot.create(:lettings_log, :completed, created_by: user, propcode: "123", ppostcode_full: "SE2 6RT", postcode_full: "NW1 5TY", tenancycode: "BZ737", startdate: Time.zone.local(2022, 2, 2, 10, 36, 49), voiddate: Time.zone.local(2019, 11, 3), mrcdate: Time.zone.local(2020, 5, 5, 10, 36, 49), tenancylength: 5, underoccupation_benefitcap: 4) } - - before do - FactoryBot.create(:duplicate_log_reference, log_type: "LettingsLog", log_id: lettings_log.id, duplicate_set_id: 123) - end + let!(:lettings_log) { FactoryBot.create(:lettings_log, :completed, created_by: user, propcode: "123", ppostcode_full: "SE2 6RT", postcode_full: "NW1 5TY", tenancycode: "BZ737", startdate: Time.zone.local(2022, 2, 2, 10, 36, 49), voiddate: Time.zone.local(2019, 11, 3), mrcdate: Time.zone.local(2020, 5, 5, 10, 36, 49), tenancylength: 5, underoccupation_benefitcap: 4, duplicate_set_id: 123) } def replace_duplicate_set_id(export_file) export_file.sub!("", "123")