UNPKG

@graphql-hive/federation-gateway-audit

Version:
171 lines (157 loc) 3.05 kB
'use strict'; var testkit = require('./testkit-CAf-AsDy.cjs'); require('@apollo/composition'); require('graphql'); require('fets'); require('@apollo/subgraph'); require('graphql-yoga'); var a = testkit.createSubgraph("a", { typeDefs: ( /* GraphQL */ ` extend schema @link( url: "https://specs.apollo.dev/federation/v2.3" import: ["@key", "@external", "@shareable"] ) type Product @key(fields: "id") { id: ID @external category: Category @shareable } type Category { details: String } ` ), resolvers: { Product: { __resolveReference(product) { return { id: product.id, category: { details: `Details for Product#${product.id}` } }; } } } }); var b = testkit.createSubgraph("b", { typeDefs: ( /* GraphQL */ ` extend schema @link( url: "https://specs.apollo.dev/federation/v2.3" import: ["@key", "@external", "@shareable"] ) type Product @key(fields: "id") { id: ID @external category: Category @shareable } type Category { id: ID @shareable } ` ), resolvers: { Product: { __resolveReference(product) { return { id: product.id, category: { id: 3 } }; } } } }); var c = testkit.createSubgraph("c", { typeDefs: ( /* GraphQL */ ` extend schema @link(url: "https://specs.apollo.dev/federation/v2.3", import: ["@key"]) type Category @key(fields: "id") { id: ID name: String } ` ), resolvers: { Category: { __resolveReference(category) { return { id: category.id, name: `Category#${category.id}` }; } } } }); var d = testkit.createSubgraph("d", { typeDefs: ( /* GraphQL */ ` extend schema @link(url: "https://specs.apollo.dev/federation/v2.3", import: ["@key"]) type Query { productFromD(id: ID!): Product } type Product @key(fields: "id") { id: ID name: String } ` ), resolvers: { Product: { __resolveReference(product) { return { id: product.id, name: `Product#${product.id}` }; } }, Query: { productFromD(_, { id }) { return { id, name: `Product#${id}` }; } } } }); var test = [ testkit.createTest( /* GraphQL */ ` query { productFromD(id: "1") { id name category { id name details } } } `, { data: { productFromD: { id: "1", name: "Product#1", category: { id: "3", name: "Category#3", details: "Details for Product#1" } } } } ) ]; var index = testkit.serve("parent-entity-call-complex", [a, b, c, d], test); exports.default = index;