lib/dsu/validators/entries_validator.rb in dsu-0.1.0.alpha.2 vs lib/dsu/validators/entries_validator.rb in dsu-0.1.0.alpha.3
- old
+ new
@@ -10,18 +10,18 @@
include Dsu::Support::FieldErrors
def validate(record)
raise 'options[:fields] is not defined.' unless options.key? :fields
raise 'options[:fields] is not an Array.' unless options[:fields].is_a? Array
- raise 'options[:fields] elements are not Symbols.' unless options[:fields].all? { |field| field.is_a? Symbol }
+ raise 'options[:fields] elements are not Symbols.' unless options[:fields].all?(Symbol)
options[:fields].each do |field|
entries = record.send(field)
unless entries.is_a?(Array)
record.errors.add(field, 'is the wrong object type. ' \
- "\"Array\" was expected, but \"#{entries.class}\" was received.")
+ "\"Array\" was expected, but \"#{entries.class}\" was received.")
next
end
validate_entry_types field, entries, record
validate_unique_entry_uuids field, entries, record
@@ -33,11 +33,11 @@
def validate_entry_types(field, entries, record)
entries.each do |entry|
next if entry.is_a? Dsu::Models::Entry
record.errors.add(field, 'entry Array element is the wrong object type. ' \
- "\"Entry\" was expected, but \"#{entry.class}\" was received.",
+ "\"Entry\" was expected, but \"#{entry.class}\" was received.",
type: Dsu::Support::FieldErrors::FIELD_TYPE_ERROR)
next
end
end
@@ -45,19 +45,16 @@
def validate_unique_entry_uuids(field, entries, record)
return unless entries.is_a? Array
entry_objects = entries.select { |entry| entry.is_a?(Dsu::Models::Entry) }
- entry_objects.map(&:uuid).tap do |uuids|
- return if uuids.uniq.length == uuids.length
- end
+ uuids = entry_objects.map(&:uuid)
+ return if uuids.uniq.length == uuids.length
- entry_objects.map(&:uuid).tap do |uuids|
- non_unique_uuids = uuids.select{ |element| uuids.count(element) > 1 }.uniq
- if non_unique_uuids.any?
- record.errors.add(field, "contains duplicate UUIDs: #{non_unique_uuids.join(', ')}.",
- type: Dsu::Support::FieldErrors::FIELD_DUPLICATE_ERROR)
- end
+ non_unique_uuids = uuids.select { |element| uuids.count(element) > 1 }.uniq
+ if non_unique_uuids.any?
+ record.errors.add(field, "contains duplicate UUIDs: #{non_unique_uuids.join(', ')}.",
+ type: Dsu::Support::FieldErrors::FIELD_DUPLICATE_ERROR)
end
end
end
end
end