class DTOSchema::Validators::ObjectValidator

Public Class Methods

new(schema) click to toggle source
# File lib/dto_schema/validators.rb, line 175
def initialize (schema)
  @schema = schema
  @fields = {}
  @invariants = []
end

Public Instance Methods

define_field(name, field) click to toggle source
# File lib/dto_schema/validators.rb, line 210
def define_field(name, field)
  @fields[name] = field
end
define_invariant(invariant) click to toggle source
# File lib/dto_schema/validators.rb, line 206
def define_invariant(invariant)
  @invariants << invariant
end
resolve() click to toggle source
# File lib/dto_schema/validators.rb, line 214
def resolve
  @fields.each_value { |field| field.resolve }
  self
end
valid?(data) click to toggle source
# File lib/dto_schema/validators.rb, line 197
def valid? (data)
  validate(data).empty?
end
valid_structure?(data) click to toggle source
# File lib/dto_schema/validators.rb, line 201
def valid_structure? (data)
  return false unless data.is_a? Hash
  @fields.all? { |name, validator| validator.valid_structure? data[name] }
end
validate(data) click to toggle source
# File lib/dto_schema/validators.rb, line 181
def validate (data)
  return ["Cannot be null"] if data.nil?
  return ["Must be object"] unless data.is_a? Hash
  result = {}
  @fields.each_pair do |name, validator|
    errors = validator.validate data[name]
    result[name] = errors unless errors.empty?
  end
  return result unless result.empty?
  @invariants.each do |invariant|
    errors = invariant.validate data
    return errors unless errors.empty?
  end
  {}
end