const parseValue = value => { switch (value.kind) { case _graphql.Kind.STRING: return parseStringValue(value.value); case _graphql.Kind.INT: return parseIntValue(value.value); case _graphql.Kind.FLOAT: return parseFloatValue(value.value); case _graphql.Kind.BOOLEAN: return parseBooleanValue(value.value); case _graphql.Kind.LIST: return parseListValues(value.values); case _graphql.Kind.OBJECT: return parseObjectFields(value.fields); default: return value.value; } }
describe('parseListValues', () => { it('should parse to list if an array', () => { expect( parseListValues([ { kind: Kind.STRING, value: 'someString' }, { kind: Kind.INT, value: '123' }, ]) ).toEqual(['someString', 123]); }); it('should fail if not an array', () => { expect(() => parseListValues()).toThrow( jasmine.stringMatching('is not a valid List') ); expect(() => parseListValues({})).toThrow( jasmine.stringMatching('is not a valid List') ); expect(() => parseListValues('some string')).toThrow( jasmine.stringMatching('is not a valid List') ); expect(() => parseListValues(123)).toThrow( jasmine.stringMatching('is not a valid List') ); }); });
describe('parseValue', () => { const someString = createValue(Kind.STRING, 'somestring'); const someInt = createValue(Kind.INT, '123'); const someFloat = createValue(Kind.FLOAT, '123.4'); const someBoolean = createValue(Kind.BOOLEAN, true);
value: { kind: Kind.INT, value: '123' }, }, ])
parseLiteral(ast) { if (ast.kind === Kind.INT) { return parseInt(ast.value, 10); } return null; }
parseLiteral(ast) { if (ast.kind === Kind.INT) { return new Date(parseInt(ast.value, 10)) } return null }
return ast.value; case _graphql.Kind.INT: case _graphql.Kind.FLOAT: return parseFloat(ast.value);