@@ -2479,5 +2479,70 @@ describe("Resolvers", () => {
24792479
24802480 expect ( self ) . toBeInstanceOf ( childResolver ) ;
24812481 } ) ;
2482+
2483+ it ( "should allow duplicate fieldResolver methods with different schema names for inherited resolvers" , async ( ) => {
2484+ getMetadataStorage ( ) . clear ( ) ;
2485+ const INHERITED_DYNAMIC_FIELD_NAME_1 = "dynamicallyNamedMethod1" ;
2486+ const INHERITED_DYNAMIC_FIELD_NAME_2 = "dynamicallyNamedMethod2" ;
2487+
2488+ const withDynamicallyNamedFieldResolver = (
2489+ classType : ClassType ,
2490+ BaseResolverClass : ClassType ,
2491+ name : string ,
2492+ ) => {
2493+ @Resolver ( ( ) => classType )
2494+ class DynamicallyNamedFieldResolver extends BaseResolverClass {
2495+ @FieldResolver ( { name } )
2496+ dynamicallyNamedField ( ) : boolean {
2497+ return true ;
2498+ }
2499+ }
2500+ return DynamicallyNamedFieldResolver ;
2501+ } ;
2502+
2503+ @ObjectType ( )
2504+ class SampleObject {
2505+ @Field ( )
2506+ sampleField ! : string ;
2507+ }
2508+
2509+ @Resolver ( )
2510+ class SampleResolver {
2511+ @Query ( ( ) => SampleObject )
2512+ sampleObject ( ) : SampleObject {
2513+ return { sampleField : "sampleText" } ;
2514+ }
2515+ }
2516+
2517+ const DynamicallyNamedFieldResolver1 = withDynamicallyNamedFieldResolver (
2518+ SampleObject ,
2519+ SampleResolver ,
2520+ INHERITED_DYNAMIC_FIELD_NAME_1 ,
2521+ ) ;
2522+ const DynamicallyNamedFieldResolver2 = withDynamicallyNamedFieldResolver (
2523+ SampleObject ,
2524+ DynamicallyNamedFieldResolver1 ,
2525+ INHERITED_DYNAMIC_FIELD_NAME_2 ,
2526+ ) ;
2527+
2528+ const schemaInfo = await getSchemaInfo ( {
2529+ resolvers : [ DynamicallyNamedFieldResolver2 ] ,
2530+ } ) ;
2531+ schemaIntrospection = schemaInfo . schemaIntrospection ;
2532+ const sampleObjectType = schemaIntrospection . types . find (
2533+ type => type . name === "SampleObject" ,
2534+ ) as IntrospectionObjectType ;
2535+
2536+ const dynamicField1 = sampleObjectType . fields . find (
2537+ field => field . name === INHERITED_DYNAMIC_FIELD_NAME_1 ,
2538+ ) ! ;
2539+
2540+ const dynamicField2 = sampleObjectType . fields . find (
2541+ field => field . name === INHERITED_DYNAMIC_FIELD_NAME_2 ,
2542+ ) ! ;
2543+
2544+ expect ( dynamicField1 ) . toBeDefined ( ) ;
2545+ expect ( dynamicField2 ) . toBeDefined ( ) ;
2546+ } ) ;
24822547 } ) ;
24832548} ) ;
0 commit comments