@@ -2618,6 +2618,62 @@ describe("Resolvers", () => {
26182618 expect ( dynamicField1 ) . toBeDefined ( ) ;
26192619 expect ( dynamicField2 ) . toBeDefined ( ) ;
26202620 } ) ;
2621+
2622+ it ( "should resolve independent factory-created field resolvers with different schema names correctly" , async ( ) => {
2623+ getMetadataStorage ( ) . clear ( ) ;
2624+
2625+ @ObjectType ( )
2626+ class FactoryUser {
2627+ @Field ( )
2628+ name ! : string ;
2629+ }
2630+
2631+ function createFieldResolver ( fieldName : string , returnValue : string ) {
2632+ @Resolver ( ( ) => FactoryUser )
2633+ class DynamicFieldResolver {
2634+ @FieldResolver ( ( ) => [ String ] , { name : fieldName } )
2635+ getItems ( ) : string [ ] {
2636+ return [ returnValue ] ;
2637+ }
2638+ }
2639+ return DynamicFieldResolver ;
2640+ }
2641+
2642+ const FollowersResolver = createFieldResolver ( "followers" , "follower1" ) ;
2643+ const FollowingResolver = createFieldResolver ( "following" , "following1" ) ;
2644+
2645+ @Resolver ( )
2646+ class FactoryUserResolver {
2647+ @Query ( ( ) => FactoryUser )
2648+ factoryUser ( ) : FactoryUser {
2649+ return { name : "TestUser" } as FactoryUser ;
2650+ }
2651+ }
2652+
2653+ const schemaInfo = await getSchemaInfo ( {
2654+ resolvers : [ FactoryUserResolver , FollowersResolver , FollowingResolver ] ,
2655+ } ) ;
2656+ const { schema : factorySchema , schemaIntrospection : factorySchemaIntrospection } = schemaInfo ;
2657+
2658+ // Introspection check
2659+ const factoryUserType = factorySchemaIntrospection . types . find (
2660+ type => type . name === "FactoryUser" ,
2661+ ) as IntrospectionObjectType ;
2662+ expect ( factoryUserType . fields . find ( f => f . name === "followers" ) ) . toBeDefined ( ) ;
2663+ expect ( factoryUserType . fields . find ( f => f . name === "following" ) ) . toBeDefined ( ) ;
2664+
2665+ // Runtime execution check
2666+ const query = `{ factoryUser { name followers following } }` ;
2667+ const result = await graphql ( { schema : factorySchema , source : query } ) ;
2668+ expect ( result . errors ) . toBeUndefined ( ) ;
2669+ expect ( result . data ) . toEqual ( {
2670+ factoryUser : {
2671+ name : "TestUser" ,
2672+ followers : [ "follower1" ] ,
2673+ following : [ "following1" ] ,
2674+ } ,
2675+ } ) ;
2676+ } ) ;
26212677 } ) ;
26222678
26232679 describe ( "Shared generic resolver" , ( ) => {
0 commit comments