Sha256: 66fded543bcb33aed8bb6321a27a5ea9e5827ed3f0492eabb9c375be27b3cdb5

Contents?: true

Size: 1.23 KB

Versions: 3

Compression:

Stored size: 1.23 KB

Contents

require 'spec_helper'

describe GraphQL::ScalarType do
  let(:scalar) {
    GraphQL::ScalarType.define do
      name "BigInt"
      coerce_input ->(value) { Integer(value) }
      coerce_result ->(value) { value.to_s }
    end
  }
  let(:bignum) { 2 ** 128 }

  it 'coerces nil into nil' do
    assert_equal(nil, scalar.coerce_input(nil))
  end

  it 'coerces input into objects' do
    assert_equal(bignum, scalar.coerce_input(bignum.to_s))
  end

  it 'coerces result value for serialization' do
    assert_equal(bignum.to_s, scalar.coerce_result(bignum))
  end

  describe 'validate_input with good input' do
    let(:result) { GraphQL::INT_TYPE.validate_input(150) }

    it 'returns a valid result' do
      assert(result.valid?)
    end
  end

  describe 'validate_input with bad input' do
    let(:result) { GraphQL::INT_TYPE.validate_input('bad num') }

    it 'returns an invalid result for bad input' do
      assert(!result.valid?)
    end

    it 'has one problem' do
      assert_equal(result.problems.length, 1)
    end

    it 'has the correct explanation' do
      assert(result.problems[0]['explanation'].include?('Could not coerce value'))
    end

    it 'has an empty path' do
      assert(result.problems[0]['path'].empty?)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
graphql-0.12.1 spec/graphql/scalar_type_spec.rb
graphql-0.12.0 spec/graphql/scalar_type_spec.rb
graphql-0.11.1 spec/graphql/scalar_type_spec.rb