Class: Cocina::Models::Validators::CompositeDescriptionValidator

Inherits:
Object
  • Object
show all
Defined in:
lib/cocina/models/validators/composite_description_validator.rb

Overview

Composite validator for description that uses a visitor pattern to validate in a single pass.

Constant Summary collapse

VALIDATORS =
[
  DescriptionTypesVisitorValidator,
  DescriptionValuesVisitorValidator,
  DescriptionDateTimeVisitorValidator
].freeze

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(clazz, attributes, validators: VALIDATORS) ⇒ CompositeDescriptionValidator

Returns a new instance of CompositeDescriptionValidator.



18
19
20
21
22
# File 'lib/cocina/models/validators/composite_description_validator.rb', line 18

def initialize(clazz, attributes, validators: VALIDATORS)
  @clazz = clazz
  @attributes = attributes
  @validators = validators.map(&:new)
end

Class Method Details

.validate(clazz, attributes) ⇒ Object



14
15
16
# File 'lib/cocina/models/validators/composite_description_validator.rb', line 14

def self.validate(clazz, attributes)
  new(clazz, attributes).validate
end

Instance Method Details

#validateObject



24
25
26
27
28
29
30
# File 'lib/cocina/models/validators/composite_description_validator.rb', line 24

def validate
  return unless meets_preconditions?

  validate_obj(obj: attributes, path: [])

  validators.each(&:validate!)
end