class SchemaTest::Validator

Public Class Methods

new(json_or_data) click to toggle source
# File lib/schema_test/validator.rb, line 7
def initialize(json_or_data)
  @data = case json_or_data
          when Hash, Array
            JSON.parse(json_or_data.to_json)
          when String
            JSON.parse(json_or_data)
          else
            json_or_data
          end
end

Public Instance Methods

validate_using_definition(definition) click to toggle source
# File lib/schema_test/validator.rb, line 18
def validate_using_definition(definition)
  validate_using_json_schema(definition.as_json_schema)
end
validate_using_json_schema(schema) click to toggle source
# File lib/schema_test/validator.rb, line 22
def validate_using_json_schema(schema)
  json_schema = JSONSchemer.schema(schema)
  errors = json_schema.validate(@data).to_a
  convert_json_schemer_errors(errors)
end

Private Instance Methods

convert_json_schemer_error(error) click to toggle source
# File lib/schema_test/validator.rb, line 34
def convert_json_schemer_error(error)
  if error['schema_pointer'] == '/additionalProperties'
    additional_key = error['data_pointer']
    "object contains the extra key: #{additional_key}"
  else
    message = case error['type']
              when 'format'
                "format should be #{error['schema']['format']}"
              when 'required'
                "missing some required attributes"
              else
                "type should be #{error['type']}"
              end
    "value at #{error['data_pointer']} (#{error['data'].inspect}) failed validation: #{message}"
  end
end
convert_json_schemer_errors(errors) click to toggle source
# File lib/schema_test/validator.rb, line 30
def convert_json_schemer_errors(errors)
  errors.map { |error| convert_json_schemer_error(error) }
end