apollo-codegen
Version:
Generate API code or type annotations based on a GraphQL schema and query documents
71 lines (51 loc) • 2.11 kB
JavaScript
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' } });
});
});