Skip to content

Commit

Permalink
fix(Resolver): getArg method now returns ArgConfig as object
Browse files Browse the repository at this point in the history
  • Loading branch information
nodkz committed Apr 16, 2019
1 parent 535530a commit e5fa9c3
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 7 deletions.
4 changes: 2 additions & 2 deletions src/ObjectTypeComposer.js
Expand Up @@ -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';
Expand Down Expand Up @@ -645,7 +645,7 @@ export class ObjectTypeComposer<TSource, TContext> {

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) };
}

Expand Down
2 changes: 1 addition & 1 deletion src/Resolver.d.ts
Expand Up @@ -158,7 +158,7 @@ export class Resolver<TSource = any, TContext = any, TArgs = ArgsMap, TReturn =

public hasArg(argName: string): boolean;

public getArg(argName: string): ComposeArgumentConfig;
public getArg(argName: string): ComposeArgumentConfigAsObject;

public getArgConfig(argName: string): GraphQLArgumentConfig;

Expand Down
18 changes: 15 additions & 3 deletions src/Resolver.js
Expand Up @@ -28,7 +28,11 @@ import type {
ComposeArgumentType,
ArgsMap, // eslint-disable-line
} from './ObjectTypeComposer';
import { InputTypeComposer, type ComposeInputFieldConfig } from './InputTypeComposer';
import {
InputTypeComposer,
isComposeInputType,
type ComposeInputFieldConfig,
} from './InputTypeComposer';
import { EnumTypeComposer } from './EnumTypeComposer';
import { SchemaComposer } from './SchemaComposer';
import deepmerge from './utils/deepmerge';
Expand Down Expand Up @@ -229,14 +233,22 @@ export class Resolver<TSource, TContext, TArgs = ArgsMap, TReturn = any> {
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 {
Expand Down
2 changes: 1 addition & 1 deletion src/__tests__/Resolver-test.js
Expand Up @@ -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'));
});

Expand Down

0 comments on commit e5fa9c3

Please sign in to comment.