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