Class: Yori::SchemaValidator

Inherits:
Object
  • Object
show all
Defined in:
lib/yori/schema_validator.rb

Overview

SchemaValidator: Common validate methods of Schema.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(schema) ⇒ SchemaValidator

Returns a new instance of SchemaValidator.



6
7
8
# File 'lib/yori/schema_validator.rb', line 6

def initialize(schema)
  @schema = schema
end

Instance Attribute Details

#schemaObject (readonly)

Returns the value of attribute schema.



10
11
12
# File 'lib/yori/schema_validator.rb', line 10

def schema
  @schema
end

Instance Method Details

#simple_class_nameObject



36
37
38
# File 'lib/yori/schema_validator.rb', line 36

def simple_class_name
  schema.class.name.split('::').last
end

#validate_field_value_type!(field, klass) ⇒ Object



19
20
21
22
23
# File 'lib/yori/schema_validator.rb', line 19

def validate_field_value_type!(field, klass)
  value = schema[field]
  return if value.nil? || value.is_a?(klass)
  raise Yori::Errors::InvalidSchemaError, "value of #{field} is not #{klass}."
end

#validate_limit_field_values!(field, *values) ⇒ Object



25
26
27
28
29
# File 'lib/yori/schema_validator.rb', line 25

def validate_limit_field_values!(field, *values)
  value = schema[field]
  return if values.include?(value)
  raise Yori::Errors::InvalidSchemaError, "Valid values of #{field} are #{values.join(', ')}."
end

#validate_mutually_exclusive_fields!(field1, field2) ⇒ Object



31
32
33
34
# File 'lib/yori/schema_validator.rb', line 31

def validate_mutually_exclusive_fields!(field1, field2)
  return if schema.key?(field1) ^ schema.key?(field2)
  raise Yori::Errors::InvalidSchemaError, "#{field1} and #{field2} are mutually exclusive."
end

#validate_require_fields!(*fields) ⇒ Object



12
13
14
15
16
17
# File 'lib/yori/schema_validator.rb', line 12

def validate_require_fields!(*fields)
  fields.each do |field|
    next if schema.key?(field)
    raise Yori::Errors::MissingRequiredFieldError, "#{field} of #{simple_class_name} is Required."
  end
end