From e5fa9c337d10f4c35bf56d1518c70ec3ba40399f Mon Sep 17 00:00:00 2001 From: nodkz Date: Mon, 15 Apr 2019 21:56:20 +0600 Subject: [PATCH] fix(Resolver): `getArg` method now returns ArgConfig as object --- src/ObjectTypeComposer.js | 4 ++-- src/Resolver.d.ts | 2 +- src/Resolver.js | 18 +++++++++++++++--- src/__tests__/Resolver-test.js | 2 +- 4 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/ObjectTypeComposer.js b/src/ObjectTypeComposer.js index 9f492511..3604e309 100644 --- a/src/ObjectTypeComposer.js +++ b/src/ObjectTypeComposer.js @@ -23,7 +23,7 @@ import type { } from './graphql'; import { ScalarTypeComposer } from './ScalarTypeComposer'; import { EnumTypeComposer } from './EnumTypeComposer'; -import { InputTypeComposer } from './InputTypeComposer'; +import { InputTypeComposer, isComposeInputType } from './InputTypeComposer'; import type { TypeAsString, TypeDefinitionString } from './TypeMapper'; import { InterfaceTypeComposer, type ComposeInterfaceType } from './InterfaceTypeComposer'; import { UnionTypeComposer } from './UnionTypeComposer'; @@ -645,7 +645,7 @@ export class ObjectTypeComposer { if (isFunction(arg)) arg = arg(); - if (typeof arg === 'string' || isComposeOutputType(arg) || Array.isArray(arg)) { + if (typeof arg === 'string' || isComposeInputType(arg) || Array.isArray(arg)) { return { type: (arg: any) }; } diff --git a/src/Resolver.d.ts b/src/Resolver.d.ts index 3988086f..f5d07670 100644 --- a/src/Resolver.d.ts +++ b/src/Resolver.d.ts @@ -158,7 +158,7 @@ export class Resolver { return !!this.args[argName]; } - getArg(argName: string): ComposeArgumentConfig { + getArg(argName: string): ComposeArgumentConfigAsObject { if (!this.hasArg(argName)) { throw new Error( `Cannot get arg '${argName}' for resolver ${this.name}. Argument does not exist.` ); } - return this.args[argName]; + let arg = this.args[argName]; + + if (isFunction(arg)) arg = arg(); + + if (typeof arg === 'string' || isComposeInputType(arg) || Array.isArray(arg)) { + return { type: (arg: any) }; + } + + return (arg: any); } getArgConfig(argName: string): GraphQLArgumentConfig { diff --git a/src/__tests__/Resolver-test.js b/src/__tests__/Resolver-test.js index c33c2ded..87168ce3 100644 --- a/src/__tests__/Resolver-test.js +++ b/src/__tests__/Resolver-test.js @@ -502,7 +502,7 @@ describe('Resolver', () => { }); it('should keep untouched other args', () => { - expect(newResolver.getArg('other')).toBe(resolver.getArg('other')); + expect(newResolver.getArg('other').type).toBe(resolver.getArg('other').type); expect(newResolver.getArgType('other')).not.toBe(resolver.getArgType('other')); });