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