UNPKG

@graphql-hive/federation-gateway-audit

Version:
166 lines (152 loc) 2.68 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", name: "u1-name" }, { id: "u2", name: "u2-name" } ]; var a = testkit.createSubgraph("a", { typeDefs: ( /* GraphQL */ ` extend schema @link( url: "https://specs.apollo.dev/federation/v2.3" import: ["@key", "@shareable"] ) input UsersFilter { first: Int! } type User @key(fields: "id") { id: ID! name: String! @shareable } type Query { usersInA(filter: UsersFilter!): [User!] } ` ), resolvers: { Query: { usersInA(_, { filter }) { if ("offset" in filter) { return []; } return users; } }, User: { __resolveReference(key) { const user = users.find((user2) => user2.id === key.id); if (!user) { return null; } return user; } } } }); var b = testkit.createSubgraph("b", { typeDefs: ( /* GraphQL */ ` extend schema @link( url: "https://specs.apollo.dev/federation/v2.3" import: ["@key", "@shareable"] ) input UsersFilter { offset: Int first: Int! } type User @key(fields: "id") { id: ID! name: String! @shareable } type Query { usersInB(filter: UsersFilter!): [User!] } ` ), resolvers: { Query: { usersInB(_, { filter }) { if ("offset" in filter) { return []; } return users; } }, User: { __resolveReference(key) { const user = users.find((user2) => user2.id === key.id); if (!user) { return null; } return user; } } } }); var test = [ testkit.createTest( /* GraphQL */ ` query { usersInA(filter: { first: 1 }) { id } } `, { data: { usersInA: [ { id: "u1" }, { id: "u2" } ] } } ), testkit.createTest( /* GraphQL */ ` query { usersInA(filter: { first: 1, offset: 2 }) { id } } `, { errors: true } ), testkit.createTest( /* GraphQL */ ` query { usersInB(filter: { first: 1, offset: 2 }) { id } } `, { errors: true } ) ]; var index = testkit.serve("input-object-intersection", [a, b], test); exports.default = index;