Module: Lutaml::Model::Validation

Included in:
Serialize
Defined in:
lib/lutaml/model/validation.rb

Instance Method Summary collapse

Instance Method Details

#validate(register: Lutaml::Model::Config.default_register) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/lutaml/model/validation.rb', line 4

def validate(register: Lutaml::Model::Config.default_register)
  errors = []

  self.class.attributes.each do |name, attr|
    value = public_send(:"#{name}")
    begin
      if value.respond_to?(:validate)
        errors.concat(value.validate)
      else
        attr.validate_value!(value, register)
      end
    rescue Lutaml::Model::InvalidValueError,
           Lutaml::Model::CollectionCountOutOfRangeError,
           Lutaml::Model::CollectionTrueMissingError,
           Lutaml::Model::PolymorphicError,
           Lutaml::Model::ValidationFailedError,
           PatternNotMatchedError => e
      errors << e
    end
  end

  validate_helper(errors)
end

#validate!(register: Lutaml::Model::Config.default_register) ⇒ Object



28
29
30
31
# File 'lib/lutaml/model/validation.rb', line 28

def validate!(register: Lutaml::Model::Config.default_register)
  errors = validate(register: register)
  raise Lutaml::Model::ValidationError.new(errors) if errors.any?
end

#validate_helper(errors) ⇒ Object



33
34
35
36
37
38
39
40
41
# File 'lib/lutaml/model/validation.rb', line 33

def validate_helper(errors)
  self.class.choice_attributes.each do |attribute|
    attribute.validate_content!(self)
  end
  errors
rescue Lutaml::Model::ChoiceUpperBoundError,
       Lutaml::Model::ChoiceLowerBoundError => e
  errors << e
end