Browse Source

alter duplicate logs helper to return duplicates in a format that can be passed through the params

update associated tests
pull/1776/head
Arthur Campbell 3 years ago committed by Kat
parent
commit
6e0792559f
  1. 26
      app/helpers/duplicate_logs_helper.rb
  2. 8
      spec/helpers/duplicate_logs_helper_spec.rb

26
app/helpers/duplicate_logs_helper.rb

@ -29,7 +29,9 @@ module DuplicateLogsHelper
end end
def duplicates_for_user(user) 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_lettings_ids = Set.new
duplicate_sales_ids = Set.new duplicate_sales_ids = Set.new
@ -37,22 +39,24 @@ module DuplicateLogsHelper
next if duplicate_lettings_ids.include? log.id next if duplicate_lettings_ids.include? log.id
duplicates = LettingsLog.filter_by_organisation(user.organisation).duplicate_logs(log) duplicates = LettingsLog.filter_by_organisation(user.organisation).duplicate_logs(log)
next unless duplicates.any? if duplicates.any?
duplicate_ids = [log.id, *duplicates.map(&:id)]
duplicate_ids = [log.id, *duplicates.map(&:id)] duplicate_sets[:lettings][lettings_count] = duplicate_ids
duplicate_sets[:lettings] << duplicate_ids lettings_count += 1
duplicate_lettings_ids << duplicate_ids duplicate_lettings_ids << duplicate_ids
end
end end
user.sales_logs(created_by: true).each do |log| user.sales_logs(created_by: true).each do |log|
next if duplicate_sales_ids.include? log.id next if duplicate_sales_ids.include? log.id
duplicates = SalesLog.filter_by_organisation(user.organisation).duplicate_logs(log) duplicates = SalesLog.filter_by_organisation(user.organisation).duplicate_logs(log)
next unless duplicates.any? if duplicates.any?
duplicate_ids = [log.id, *duplicates.map(&:id)]
duplicate_ids = [log.id, *duplicates.map(&:id)] duplicate_sets[:sales][sales_count] = duplicate_ids
duplicate_sets[:sales] << duplicate_ids sales_count += 1
duplicate_sales_ids << duplicate_ids duplicate_sales_ids << duplicate_ids
end
end end
return if duplicate_lettings_ids.empty? && duplicate_sales_ids.empty? return if duplicate_lettings_ids.empty? && duplicate_sales_ids.empty?

8
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 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).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
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 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).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
end end
@ -59,8 +59,8 @@ RSpec.describe DuplicateLogsHelper do
[further_sales_log.id, *further_duplicate_sales_logs.map(&:id)], [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[:lettings].values).to match_array [[lettings_log.id, duplicate_lettings_log.id]]
expect(result[:sales]).to match_array expected_sales_duplicates_result expect(result[:sales].values).to match_array expected_sales_duplicates_result
end end
end end
end end

Loading…
Cancel
Save