diff --git a/.changeset/tough-dolphins-pump.md b/.changeset/tough-dolphins-pump.md new file mode 100644 index 0000000000..2e8f82cca0 --- /dev/null +++ b/.changeset/tough-dolphins-pump.md @@ -0,0 +1,5 @@ +--- +'graphql-modules': major +--- + +Update resolvers.ts, handle error when "resolver" variable in addObject diff --git a/packages/graphql-modules/src/module/resolvers.ts b/packages/graphql-modules/src/module/resolvers.ts index f74bebcc99..29f76f14a7 100644 --- a/packages/graphql-modules/src/module/resolvers.ts +++ b/packages/graphql-modules/src/module/resolvers.ts @@ -258,6 +258,13 @@ function addObject({ if (fields.hasOwnProperty(fieldName)) { const resolver = fields[fieldName]; + if(typeof resolver === 'undefined'){ + throw new ResolverDuplicatedError( + `Resolver not implement of "${typeName}.${fieldName}"`, + useLocation({ dirname: config.dirname, id: config.id }) + ); + } + if (isResolveFn(resolver)) { if (container[typeName][fieldName]) { throw new ResolverDuplicatedError( diff --git a/packages/graphql-modules/tests/context.spec.ts b/packages/graphql-modules/tests/context.spec.ts index 6fd7f75b6b..61a2de262f 100644 --- a/packages/graphql-modules/tests/context.spec.ts +++ b/packages/graphql-modules/tests/context.spec.ts @@ -130,3 +130,25 @@ test('Global context and module context should be reachable', async () => { expect.objectContaining({ postRegion: 1234 }) ); }); + +test('Resolver is implemented', () => { + const invalidModule = createModule({ + id: 'invalid-module', + typeDefs: gql` + type Query { + post(id: Int!): String! + } + `, + resolvers: { + Query: { + post: undefined, + }, + }, + }); + + expect(() => { + createApplication({ + modules: [invalidModule], + }); + }).toThrow('Resolver not implement of "Query.post"'); +});