class OpenAPIParser::SchemaValidator::OneOfValidator

Public Instance Methods

coerce_and_validate(value, schema, **_keyword_args) click to toggle source

@param [Object] value @param [OpenAPIParser::Schemas::Schema] schema

# File lib/openapi_parser/schema_validators/one_of_validator.rb, line 5
def coerce_and_validate(value, schema, **_keyword_args)
  if schema.discriminator
    return validate_discriminator_schema(schema.discriminator, value)
  end

  # if multiple schemas are satisfied, it's not valid
  result = schema.one_of.one? do |s|
    _coerced, err = validatable.validate_schema(value, s)
    err.nil?
  end
  if result
    [value, nil]
  else
    [nil, OpenAPIParser::NotOneOf.new(value, schema.object_reference)]
  end
end