UNPKG

apollo-codegen

Version:

Generate API code or type annotations based on a GraphQL schema and query documents

71 lines (51 loc) 2.11 kB
import { parseValue, } from 'graphql'; import { valueFromValueNode } from '../src/utilities/graphql'; describe('#valueFromValueNode', () => { test(`should return a number for an IntValue`, () => { const valueNode = parseValue("1"); const value = valueFromValueNode(valueNode); expect(value).toBe(1); }); test(`should return a number for a FloatValue`, () => { const valueNode = parseValue("1.0"); const value = valueFromValueNode(valueNode); expect(value).toBe(1.0); }); test(`should return a boolean for a BooleanValue`, () => { const valueNode = parseValue("true"); const value = valueFromValueNode(valueNode); expect(value).toBe(true); }); test(`should return null for a NullValue`, () => { const valueNode = parseValue("null"); const value = valueFromValueNode(valueNode); expect(value).toBe(null); }); test(`should return a string for a StringValue`, () => { const valueNode = parseValue("\"foo\""); const value = valueFromValueNode(valueNode); expect(value).toBe("foo"); }); test(`should return a string for an EnumValue`, () => { const valueNode = parseValue("JEDI"); const value = valueFromValueNode(valueNode); expect(value).toBe("JEDI"); }); test(`should return an object for a Variable`, () => { const valueNode = parseValue("$something"); const value = valueFromValueNode(valueNode); expect(value).toEqual({ kind: 'Variable', variableName: 'something' }); }); test(`should return an array for a ListValue`, () => { const valueNode = parseValue("[ \"foo\", 1, JEDI, $something ]"); const value = valueFromValueNode(valueNode); expect(value).toEqual([ "foo", 1, "JEDI", { kind: 'Variable', variableName: 'something' } ]); }); test(`should return an object for an ObjectValue`, () => { const valueNode = parseValue("{ foo: \"foo\", bar: 1, bla: JEDI, baz: $something }"); const value = valueFromValueNode(valueNode); expect(value).toEqual({ foo: "foo", bar: 1, bla: "JEDI", baz: { kind: 'Variable', variableName: 'something' } }); }); });