diff --git a/packages/delegate/src/mergeFields.ts b/packages/delegate/src/mergeFields.ts index 9decc890560..064b74eec22 100644 --- a/packages/delegate/src/mergeFields.ts +++ b/packages/delegate/src/mergeFields.ts @@ -40,6 +40,10 @@ function buildDelegationPlan( const delegationMap: Map> = new Map(); originalSelections.forEach(selection => { + if (selection.name.value === '__typename') { + return; + } + // 2a. use uniqueFields map to assign fields to subschema if one of possible subschemas const uniqueSubschema: SubschemaConfig = uniqueFields[selection.name.value]; diff --git a/packages/stitch/tests/typeMerging.test.ts b/packages/stitch/tests/typeMerging.test.ts index 47938ef1b2a..642658fbee4 100644 --- a/packages/stitch/tests/typeMerging.test.ts +++ b/packages/stitch/tests/typeMerging.test.ts @@ -74,6 +74,7 @@ describe('merging using type merging', () => { const query = ` query { userById(id: 5) { + __typename chirps { id textAlias: text @@ -88,6 +89,7 @@ describe('merging using type merging', () => { const result = await graphql(stitchedSchema, query); expect(result.errors).toBeUndefined(); + expect(result.data.userById.__typename).toBe('User'); expect(result.data.userById.chirps[1].id).not.toBe(null); expect(result.data.userById.chirps[1].text).not.toBe(null); expect(result.data.userById.chirps[1].author.email).not.toBe(null);