Files
apollo-codegen/test/valueFromValueNode.ts

74 lines
2.1 KiB
TypeScript

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' }
});
});
});