Sha256: 766a67ef0070c83f6d0b64feb8fbac4f1788fdc4c72daff726c6ad720136b715

Contents?: true

Size: 1011 Bytes

Versions: 24

Compression:

Stored size: 1011 Bytes

Contents

# A helper to ensure `object` implements the concept `as`
class GraphQL::Schema::ImplementationValidator
  attr_reader :object, :errors, :implementation_as
  def initialize(object, as:, errors:)
    @object = object
    @implementation_as = as
    @errors = errors
  end

  # Ensure the object responds to `method_name`.
  # If `block_given?`, yield the return value of that method
  # If provided, use `as` in the error message, overriding class-level `as`.
  def must_respond_to(method_name, args: [], as: nil)
    local_as = as || implementation_as
    method_signature = "##{method_name}(#{args.join(", ")})"
    if !object.respond_to?(method_name)
      errors << "#{object.to_s} must respond to #{method_signature} to be a #{local_as}"
    elsif block_given?
      return_value = object.public_send(method_name)
      if return_value.nil?
        errors << "#{object.to_s} must return a value for #{method_signature} to be a #{local_as}"
      else
        yield(return_value)
      end
    end
  end
end

Version data entries

24 entries across 24 versions & 1 rubygems

Version Path
graphql-0.12.1 lib/graphql/schema/implementation_validator.rb
graphql-0.12.0 lib/graphql/schema/implementation_validator.rb
graphql-0.11.1 lib/graphql/schema/implementation_validator.rb
graphql-0.11.0 lib/graphql/schema/implementation_validator.rb
graphql-0.10.9 lib/graphql/schema/implementation_validator.rb
graphql-0.10.8 lib/graphql/schema/implementation_validator.rb
graphql-0.10.7 lib/graphql/schema/implementation_validator.rb
graphql-0.10.6 lib/graphql/schema/implementation_validator.rb
graphql-0.10.5 lib/graphql/schema/implementation_validator.rb
graphql-0.10.4 lib/graphql/schema/implementation_validator.rb
graphql-0.10.3 lib/graphql/schema/implementation_validator.rb
graphql-0.10.2 lib/graphql/schema/implementation_validator.rb
graphql-0.10.1 lib/graphql/schema/implementation_validator.rb
graphql-0.10.0 lib/graphql/schema/implementation_validator.rb
graphql-0.9.5 lib/graphql/schema/implementation_validator.rb
graphql-0.9.4 lib/graphql/schema/implementation_validator.rb
graphql-0.9.3 lib/graphql/schema/implementation_validator.rb
graphql-0.9.2 lib/graphql/schema/implementation_validator.rb
graphql-0.8.1 lib/graphql/schema/implementation_validator.rb
graphql-0.8.0 lib/graphql/schema/implementation_validator.rb