@@ -366,12 +366,17 @@ describe('TypeScript Resolvers Plugin + Apollo Federation', () => {
366
366
367
367
type Book {
368
368
author: User @provides(fields: "name")
369
+ editor: User @provides(fields: "company { taxCode }")
369
370
}
370
371
371
372
type User @key(fields: "id") {
372
373
id: ID!
373
374
name: String @external
374
375
username: String @external
376
+ address: Address
377
+ dateOfBirth: DateOfBirth
378
+ placeOfBirth: PlaceOfBirth
379
+ company: Company
375
380
}
376
381
377
382
type Address {
@@ -389,6 +394,11 @@ describe('TypeScript Resolvers Plugin + Apollo Federation', () => {
389
394
city: String!
390
395
country: String!
391
396
}
397
+
398
+ type Company @external {
399
+ name: String!
400
+ taxCode: String!
401
+ }
392
402
` ;
393
403
394
404
const content = await generate ( {
@@ -398,12 +408,13 @@ describe('TypeScript Resolvers Plugin + Apollo Federation', () => {
398
408
} ,
399
409
} ) ;
400
410
401
- // UserResolvers should not have a resolver function of name field
411
+ // UserResolvers should not have `username` resolver because it is marked with `@external`
412
+ // UserResolvers should have `name` resolver because whilst it is marked with `@external`, it is provided by `Book.author`
402
413
expect ( content ) . toBeSimilarStringTo ( `
403
414
export type UserResolvers<ContextType = any, ParentType extends ResolversParentTypes['User'] = ResolversParentTypes['User'], FederationType extends FederationTypes['User'] = FederationTypes['User']> = {
404
415
__resolveReference?: ReferenceResolver<Maybe<ResolversTypes['User']>, { __typename: 'User' } & GraphQLRecursivePick<FederationType, {"id":true}>, ContextType>;
405
- id?: Resolver<ResolversTypes['ID'], { __typename: 'User' } & GraphQLRecursivePick<FederationType, {"id":true}> , ContextType>;
406
- name?: Resolver<Maybe<ResolversTypes['String']>, { __typename: 'User' } & GraphQLRecursivePick<FederationType, {"id":true}> , ContextType>;
416
+ id?: Resolver<ResolversTypes['ID'], ParentType , ContextType>;
417
+ name?: Resolver<Maybe<ResolversTypes['String']>, ParentType , ContextType>;
407
418
};
408
419
` ) ;
409
420
@@ -414,6 +425,13 @@ describe('TypeScript Resolvers Plugin + Apollo Federation', () => {
414
425
};
415
426
` ) ;
416
427
428
+ // CompanyResolvers should only have taxCode resolver because it is part of the `@provides` directive in `Book.editor`
429
+ expect ( content ) . toBeSimilarStringTo ( `
430
+ export type CompanyResolvers<ContextType = any, ParentType extends ResolversParentTypes['Company'] = ResolversParentTypes['Company']> = {
431
+ taxCode?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
432
+ };
433
+ ` ) ;
434
+
417
435
// DateOfBirthResolvers should not be generated because there is no field not marked with @external
418
436
expect ( content ) . not . toBeSimilarStringTo ( 'export type DateOfBirthResolvers' ) ;
419
437
0 commit comments