From a342183eb9b9821d542755e86a2c6f31595ce992 Mon Sep 17 00:00:00 2001 From: Ivan Goncharov Date: Tue, 17 Nov 2020 01:33:27 +0200 Subject: [PATCH] Add tests for supporting Iterable collections across the lib (#2847) --- src/execution/__tests__/lists-test.js | 4 ++-- src/utilities/__tests__/astFromValue-test.js | 17 +++++++++++++++++ .../__tests__/coerceInputValue-test.js | 11 +++++++++++ 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/execution/__tests__/lists-test.js b/src/execution/__tests__/lists-test.js index 5e996efbdfd..c5f1b393a09 100644 --- a/src/execution/__tests__/lists-test.js +++ b/src/execution/__tests__/lists-test.js @@ -40,8 +40,8 @@ describe('Execute: Accepts any iterable as list value', () => { }); it('Accepts function arguments as a List value', () => { - function getArgs(...args: Array) { - return args; + function getArgs(..._args: Array) { + return arguments; } const listField = getArgs('one', 'two'); diff --git a/src/utilities/__tests__/astFromValue-test.js b/src/utilities/__tests__/astFromValue-test.js index 81c551441e7..3641f00227e 100644 --- a/src/utilities/__tests__/astFromValue-test.js +++ b/src/utilities/__tests__/astFromValue-test.js @@ -293,6 +293,23 @@ describe('astFromValue', () => { { kind: 'EnumValue', value: 'GOODBYE' }, ], }); + + function* listGenerator() { + yield 1; + yield 2; + yield 3; + } + + expect( + astFromValue(listGenerator(), new GraphQLList(GraphQLInt)), + ).to.deep.equal({ + kind: 'ListValue', + values: [ + { kind: 'IntValue', value: '1' }, + { kind: 'IntValue', value: '2' }, + { kind: 'IntValue', value: '3' }, + ], + }); }); it('converts list singletons', () => { diff --git a/src/utilities/__tests__/coerceInputValue-test.js b/src/utilities/__tests__/coerceInputValue-test.js index 4da5636769c..05f7ca12c2a 100644 --- a/src/utilities/__tests__/coerceInputValue-test.js +++ b/src/utilities/__tests__/coerceInputValue-test.js @@ -303,6 +303,17 @@ describe('coerceInputValue', () => { expectValue(result).to.deep.equal([1, 2, 3]); }); + it('returns no error for a valid iterable input', () => { + function* listGenerator() { + yield 1; + yield 2; + yield 3; + } + + const result = coerceValue(listGenerator(), TestList); + expectValue(result).to.deep.equal([1, 2, 3]); + }); + it('returns an error for an invalid input', () => { const result = coerceValue([1, 'b', true, 4], TestList); expectErrors(result).to.deep.equal([