UNPKG

@graphql-hive/federation-gateway-audit

Version:
216 lines (206 loc) 3.54 kB
'use strict'; var testkit = require('./testkit-CAf-AsDy.cjs'); require('@apollo/composition'); require('graphql'); require('fets'); require('@apollo/subgraph'); require('graphql-yoga'); const users = [ { id: "u1", rid: "u1-rid", name: "u1-name", nickname: "u1-nickname" }, { id: "u2", rid: "u2-rid", name: "u2-name", nickname: "u2-nickname" } ]; var a = testkit.createSubgraph("a", { typeDefs: ( /* GraphQL */ ` type Query { randomUser: User providedRandomUser: User @provides(fields: "name") } extend type User @key(fields: "id") { id: ID! @external name: String! @external rid: ID } ` ), resolvers: { Query: { randomUser() { return { id: users[0].id, rid: users[0].rid }; }, providedRandomUser() { return { id: users[0].id, rid: users[0].rid, name: users[0].name }; } }, User: { __resolveReference(key) { const user = users.find((u) => u.id === key.id); if (!user) { return null; } return { id: user.id, rid: user.rid }; }, name(user) { return user.name ?? "never"; } } } }); var b = testkit.createSubgraph("b", { typeDefs: ( /* GraphQL */ ` type Query { userById(id: ID): User } type User @key(fields: "id") { id: ID! name: String! nickname: String } ` ), resolvers: { Query: { userById: (_, { id }) => { const user = users.find((u) => u.id === id); if (!user) { return null; } return { id: user.id, name: user.name, nickname: user.nickname }; } }, User: { __resolveReference: (key) => { const user = users.find((u) => u.id === key.id); if (!user) { return null; } return { id: user.id, name: user.name, nickname: user.nickname }; } } } }); var test = [ testkit.createTest( /* GraphQL */ ` query { randomUser { id name } userById(id: "u2") { id name nickname } } `, { data: { randomUser: { id: "u1", name: "u1-name" }, userById: { id: "u2", name: "u2-name", nickname: "u2-nickname" } } } ), testkit.createTest( /* GraphQL */ ` query { randomUser { id rid } } `, { data: { randomUser: { id: "u1", rid: "u1-rid" } } } ), testkit.createTest( /* GraphQL */ ` query { randomUser { id rid name } } `, { data: { randomUser: { id: "u1", rid: "u1-rid", name: "u1-name" } } } ), testkit.createTest( /* GraphQL */ ` query { providedRandomUser { id rid name } } `, { data: { providedRandomUser: { id: "u1", rid: "u1-rid", name: "u1-name" } } } ) ]; var index = testkit.serve("fed1-external-extension", [a, b], test); exports.default = index;