apollo-codegen-core
Version:
Core generator APIs for Apollo Codegen
81 lines (61 loc) • 2.17 kB
text/typescript
import { parseValue } from "graphql";
import { valueFromValueNode } from "../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" },
});
});
});