Class: GraphQL::ResponseValidator
- Inherits:
-
Object
- Object
- GraphQL::ResponseValidator
- Defined in:
- lib/graphql/response_validator.rb,
lib/graphql/response_validator/version.rb
Defined Under Namespace
Classes: ValidationError
Constant Summary collapse
- SYSTEM_TYPENAME =
"__typename__"
- SCALAR_VALIDATORS =
{ "Boolean" => -> (data) { data.is_a?(TrueClass) || data.is_a?(FalseClass) }, "Float" => -> (data) { data.is_a?(Numeric) }, "ID" => -> (data) { data.is_a?(String) || data.is_a?(Integer) }, "Int" => -> (data) { data.is_a?(Integer) }, "JSON" => -> (data) { data.is_a?(Hash) }, "String" => -> (data) { data.is_a?(String) }, }.freeze
- VERSION =
"0.0.2"
Instance Attribute Summary collapse
-
#errors ⇒ Object
readonly
Returns the value of attribute errors.
Instance Method Summary collapse
-
#initialize(query, data, scalar_validators: SCALAR_VALIDATORS, system_typename: SYSTEM_TYPENAME) ⇒ ResponseValidator
constructor
A new instance of ResponseValidator.
- #prune! ⇒ Object
- #to_h ⇒ Object
- #valid? ⇒ Boolean
Constructor Details
#initialize(query, data, scalar_validators: SCALAR_VALIDATORS, system_typename: SYSTEM_TYPENAME) ⇒ ResponseValidator
Returns a new instance of ResponseValidator.
21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/graphql/response_validator.rb', line 21 def initialize( query, data, scalar_validators: SCALAR_VALIDATORS, system_typename: SYSTEM_TYPENAME ) @query = query @data = data @errors = [] @valid = nil @scalar_validators = scalar_validators @system_typename = system_typename @system_typenames = Set.new end |
Instance Attribute Details
#errors ⇒ Object (readonly)
Returns the value of attribute errors.
19 20 21 |
# File 'lib/graphql/response_validator.rb', line 19 def errors @errors end |
Instance Method Details
#prune! ⇒ Object
45 46 47 48 49 |
# File 'lib/graphql/response_validator.rb', line 45 def prune! valid? @system_typenames.each { _1.delete(@system_typename) } self end |
#to_h ⇒ Object
51 52 53 |
# File 'lib/graphql/response_validator.rb', line 51 def to_h @data end |
#valid? ⇒ Boolean
36 37 38 39 40 41 42 43 |
# File 'lib/graphql/response_validator.rb', line 36 def valid? return @valid unless @valid.nil? op = @query.selected_operation parent_type = @query.root_type_for_operation(op.operation_type) validate_selections(parent_type, op, @data["data"]) @valid = @errors.none? end |