Skip to content

Commit

Permalink
Refactor: Same idiom as compare_objects (#669)
Browse files Browse the repository at this point in the history
  • Loading branch information
mccalluc committed Dec 6, 2022
1 parent 70110d5 commit 8e93c6b
Showing 1 changed file with 18 additions and 26 deletions.
44 changes: 18 additions & 26 deletions app/services/resource_compare_service.rb
Original file line number Diff line number Diff line change
Expand Up @@ -36,24 +36,24 @@ def compare_resources
[:titles, :creators, :contributors, :related_objects].each do |field|
compare_objects(field)
end
compare_simple_values
[:description, :publisher, :publication_year,
:resource_type, :resource_type_general,
:doi, :ark, :version_number].each do |field|
compare_simple_values(field)
end
compare_rights
compare_keywords
compare_collection_tags
[:keywords, :collection_tags].each do |field|
compare_arrays(field)
end
end

##
# Compares simple single values between the two resources.
def compare_simple_values
field_names = [:description, :publisher, :publication_year, :resource_type, :resource_type_general,
:doi, :ark, :version_number]

field_names.each do |field_name|
before_value = @before.send(field_name)
after_value = @after.send(field_name)
if before_value != after_value
@differences[field_name] = [{ action: :changed, from: before_value, to: after_value }]
end
# Compares simple single value between the two resources.
def compare_simple_values(method_sym)
before_value = @before.send(method_sym)
after_value = @after.send(method_sym)
if before_value != after_value
@differences[method_sym] = [{ action: :changed, from: before_value, to: after_value }]
end
end

Expand All @@ -65,20 +65,12 @@ def compare_rights
end
end

def compare_keywords
changes = compare_arrays(@before.keywords, @after.keywords)
@differences[:keywords] = changes if changes.count > 0
end

def compare_collection_tags
changes = compare_arrays(@before.collection_tags, @after.collection_tags)
@differences[:collection_tags] = changes if changes.count > 0
end

##
# Compares two arrays of simple string values.
# Returns an array with the changes (values removed, values added)
def compare_arrays(before_values, after_values)
def compare_arrays(method_sym)
before_values = @before.send(method_sym)
after_values = @after.send(method_sym)
changes = []
removed = before_values - after_values
added = after_values - before_values
Expand All @@ -92,7 +84,7 @@ def compare_arrays(before_values, after_values)
changes << { action: :added, value: value } if value.in?(added)
end

changes
@differences[method_sym] = changes if changes.count > 0
end

# rubocop:disable Metrics/MethodLength
Expand Down

0 comments on commit 8e93c6b

Please sign in to comment.