From 6e0792559f93e6b7ee67388f79826f55d63c96e4 Mon Sep 17 00:00:00 2001 From: Arthur Campbell Date: Thu, 13 Jul 2023 17:41:51 +0100 Subject: [PATCH] alter duplicate logs helper to return duplicates in a format that can be passed through the params update associated tests --- app/helpers/duplicate_logs_helper.rb | 26 +++++++++++++--------- spec/helpers/duplicate_logs_helper_spec.rb | 8 +++---- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/app/helpers/duplicate_logs_helper.rb b/app/helpers/duplicate_logs_helper.rb index 5f4e7c68a..4a0cd09e4 100644 --- a/app/helpers/duplicate_logs_helper.rb +++ b/app/helpers/duplicate_logs_helper.rb @@ -29,7 +29,9 @@ module DuplicateLogsHelper end def duplicates_for_user(user) - duplicate_sets = { lettings: [], sales: [] } + duplicate_sets = { lettings: {}, sales: {} } + lettings_count = 0 + sales_count = 0 duplicate_lettings_ids = Set.new duplicate_sales_ids = Set.new @@ -37,22 +39,24 @@ module DuplicateLogsHelper next if duplicate_lettings_ids.include? log.id duplicates = LettingsLog.filter_by_organisation(user.organisation).duplicate_logs(log) - next unless duplicates.any? - - duplicate_ids = [log.id, *duplicates.map(&:id)] - duplicate_sets[:lettings] << duplicate_ids - duplicate_lettings_ids << duplicate_ids + if duplicates.any? + duplicate_ids = [log.id, *duplicates.map(&:id)] + duplicate_sets[:lettings][lettings_count] = duplicate_ids + lettings_count += 1 + duplicate_lettings_ids << duplicate_ids + end end user.sales_logs(created_by: true).each do |log| next if duplicate_sales_ids.include? log.id duplicates = SalesLog.filter_by_organisation(user.organisation).duplicate_logs(log) - next unless duplicates.any? - - duplicate_ids = [log.id, *duplicates.map(&:id)] - duplicate_sets[:sales] << duplicate_ids - duplicate_sales_ids << duplicate_ids + if duplicates.any? + duplicate_ids = [log.id, *duplicates.map(&:id)] + duplicate_sets[:sales][sales_count] = duplicate_ids + sales_count += 1 + duplicate_sales_ids << duplicate_ids + end end return if duplicate_lettings_ids.empty? && duplicate_sales_ids.empty? diff --git a/spec/helpers/duplicate_logs_helper_spec.rb b/spec/helpers/duplicate_logs_helper_spec.rb index e03cae521..8e728f4dc 100644 --- a/spec/helpers/duplicate_logs_helper_spec.rb +++ b/spec/helpers/duplicate_logs_helper_spec.rb @@ -34,7 +34,7 @@ RSpec.describe DuplicateLogsHelper do it "returns the ids of the duplicates in an array under the lettings key in the duplicates hash" do expect(result).to be_a Hash - expect(result[:lettings]).to match_array [[lettings_log.id, duplicate_lettings_log.id]] + expect(result[:lettings].values).to match_array [[lettings_log.id, duplicate_lettings_log.id]] end end @@ -43,7 +43,7 @@ RSpec.describe DuplicateLogsHelper do it "returns the ids of the duplicates in an array under the sales key in the duplicates hash" do expect(result).to be_a Hash - expect(result[:sales]).to match_array [[sales_log.id, duplicate_sales_log.id]] + expect(result[:sales].values).to match_array [[sales_log.id, duplicate_sales_log.id]] end end @@ -59,8 +59,8 @@ RSpec.describe DuplicateLogsHelper do [further_sales_log.id, *further_duplicate_sales_logs.map(&:id)], ] - expect(result[:lettings]).to match_array [[lettings_log.id, duplicate_lettings_log.id]] - expect(result[:sales]).to match_array expected_sales_duplicates_result + expect(result[:lettings].values).to match_array [[lettings_log.id, duplicate_lettings_log.id]] + expect(result[:sales].values).to match_array expected_sales_duplicates_result end end end