From 28c82df5275d65c990976389238c5d54765d5a96 Mon Sep 17 00:00:00 2001 From: Laurin Quast Date: Mon, 13 Apr 2026 08:23:45 +0200 Subject: [PATCH] ehm --- __tests__/supergraph/base.spec.ts | 90 +++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/__tests__/supergraph/base.spec.ts b/__tests__/supergraph/base.spec.ts index 1b5d41b..4561dc3 100644 --- a/__tests__/supergraph/base.spec.ts +++ b/__tests__/supergraph/base.spec.ts @@ -521,6 +521,96 @@ testVersions((api, version) => { `); }); + test("compose directive definition conflict (does the order matter? 1)", () => { + const result = api.composeServices([ + { + name: "a", + url: "http://a.com", + typeDefs: graphql` + extend schema + @link(url: "https://specs.apollo.dev/federation/${version}", import: ["@composeDirective"]) + @link(url: "https://a.dev/a/v1.0", import: ["@a"]) + @composeDirective(name: "@a") + + directive @a(name: String!) on QUERY | MUTATION + + type Query { + a: Int + } + `, + }, + { + name: "b", + url: "http://b.com", + typeDefs: graphql` + extend schema + @link(url: "https://specs.apollo.dev/federation/${version}", import: ["@composeDirective"]) + @link(url: "https://a.dev/a/v1.0", import: ["@a"]) + @composeDirective(name: "@a") + + + directive @a(name: ID!) on QUERY | MUTATION + + + type Query { + b: Int + } + `, + }, + ]); + + expect(result.errors).toEqual(undefined); + assertCompositionSuccess(result); + expect(result.supergraphSdl).toContainGraphQL(graphql` + directive @a(name: String!) on QUERY | MUTATION + `); + }); + + test("compose directive definition conflict (does the order matter? 2)", () => { + const result = api.composeServices([ + { + name: "b", + url: "http://b.com", + typeDefs: graphql` + extend schema + @link(url: "https://specs.apollo.dev/federation/${version}", import: ["@composeDirective"]) + @link(url: "https://a.dev/a/v1.0", import: ["@a"]) + @composeDirective(name: "@a") + + + directive @a(name: ID!) on QUERY | MUTATION + + + type Query { + b: Int + } + `, + }, + { + name: "a", + url: "http://a.com", + typeDefs: graphql` + extend schema + @link(url: "https://specs.apollo.dev/federation/${version}", import: ["@composeDirective"]) + @link(url: "https://a.dev/a/v1.0", import: ["@a"]) + @composeDirective(name: "@a") + + directive @a(name: String!) on QUERY | MUTATION + + type Query { + a: Int + } + `, + }, + ]); + + expect(result.errors).toEqual(undefined); + assertCompositionSuccess(result); + expect(result.supergraphSdl).toContainGraphQL(graphql` + directive @a(name: String!) on QUERY | MUTATION + `); + }); + test("composed directive with VARIABLE_DEFINITION and FIELD locations is preserved in supergraph", () => { const result = api.composeServices([ {