diff --git a/CHANGELOG.md b/CHANGELOG.md index c9b2a5fb42..092be48c08 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,7 +19,7 @@ - `apollo-env` - - `apollo-graphql` - - + - Add support for interface on interfaces to transformSchema. [PR #2456](https://github.com/apollographql/apollo-tooling/pull/2456) - `apollo-language-server` - - `apollo-tools` diff --git a/packages/apollo-graphql/src/schema/__tests__/transformSchema.test.ts b/packages/apollo-graphql/src/schema/__tests__/transformSchema.test.ts index 7326b63c16..a3c1aa94ef 100644 --- a/packages/apollo-graphql/src/schema/__tests__/transformSchema.test.ts +++ b/packages/apollo-graphql/src/schema/__tests__/transformSchema.test.ts @@ -14,10 +14,27 @@ describe("transformSchema", () => { # https://github.com/apollographql/apollo-tooling/issues/2162 directive @test(baz: DirectiveArg) on FIELD_DEFINITION + + interface FooInterface { + foo: String + } + + interface BarInterface implements FooInterface { + foo: String + bar: Boolean + } + + type FooBarBazType implements FooInterface & BarInterface { + foo: String + bar: Boolean + baz: Float + } `); + const originalSDL = printSchema(schema); const newSchema = transformSchema(schema, namedType => namedType); - expect(printSchema(newSchema)).toEqual(printSchema(schema)); + expect(printSchema(schema)).toEqual(originalSDL); + expect(printSchema(newSchema)).toEqual(originalSDL); }); }); diff --git a/packages/apollo-graphql/src/schema/transformSchema.ts b/packages/apollo-graphql/src/schema/transformSchema.ts index 7c83392e65..5460a53b4a 100644 --- a/packages/apollo-graphql/src/schema/transformSchema.ts +++ b/packages/apollo-graphql/src/schema/transformSchema.ts @@ -72,6 +72,7 @@ export function transformSchema( return new GraphQLInterfaceType({ ...config, + interfaces: () => config.interfaces.map(replaceNamedType), fields: () => replaceFields(config.fields) }); } else if (isUnionType(type)) {