@graphql-hive/federation-gateway-audit
Version:
Audit tool for Apollo Federation Gateway
239 lines (227 loc) • 4.69 kB
JavaScript
import { c as createSubgraph, a as createTest, s as serve } from './testkit-BtZjdl4n.js';
import '@apollo/composition';
import 'graphql';
import 'fets';
import '@apollo/subgraph';
import 'graphql-yoga';
const products = [
{
id: "p1",
price: 699.99
}
];
var a = createSubgraph("a", {
typeDefs: (
/* GraphQL */
`
extend schema
type Query {
product: Product
}
type Product {
id: ID!
price: Float!
}
`
),
resolvers: {
Query: {
product() {
return {
id: products[0].id,
price: products[0].price
};
}
},
Product: {
__resolveReference(key) {
const product = products.find((product2) => product2.id === key.id);
if (!product) {
return null;
}
return {
id: product.id,
price: product.price
};
}
}
}
});
var b = createSubgraph("b", {
typeDefs: (
/* GraphQL */
`
extend schema
type Product {
id: ID!
price: Float!
isExpensive: Boolean!
}
`
),
resolvers: {
Product: {
__resolveReference(key) {
const product = products.find((product2) => product2.id === key.id);
if (!product) {
return null;
}
if ("price" in key) {
return {
id: product.id,
price: key.price
};
}
return {
id: product.id
};
},
isExpensive(product) {
if (!product.price) {
throw new Error("Price is missing");
}
return product.price > 500;
}
}
}
});
var c = createSubgraph("c", {
typeDefs: (
/* GraphQL */
`
extend schema
type Product {
id: ID!
isExpensive: Boolean!
include: Boolean!
skip: Boolean!
neverCalledInclude: Boolean!
neverCalledSkip: Boolean!
}
`
),
resolvers: {
Product: {
__resolveReference(key) {
const product = products.find((product2) => product2.id === key.id);
if (!product) {
return null;
}
if ("isExpensive" in key) {
return {
id: product.id,
isExpensive: key.isExpensive
};
}
return {
id: product.id
};
},
include(product) {
if (typeof product.isExpensive !== "boolean") {
throw new Error("isExpensive is missing");
}
return true;
},
neverCalledInclude() {
throw new Error("neverCalledInclude should not be called");
},
skip(product) {
if (typeof product.isExpensive !== "boolean") {
throw new Error("isExpensive is missing");
}
return true;
},
neverCalledSkip() {
throw new Error("neverCalledSkip should not be called");
}
}
}
});
var test = [
createTest(
/* GraphQL */
`
query ($bool: Boolean = false) {
product {
price
neverCalledInclude
}
}
`,
{
data: {
product: {
price: 699.99
}
}
}
),
createTest(
/* GraphQL */
`
query ($bool: Boolean = true) {
product {
price
neverCalledSkip
}
}
`,
{
data: {
product: {
price: 699.99
}
}
}
),
createTest(
/* GraphQL */
`
query ($bool: Boolean = true) {
product {
price
include
}
}
`,
{
data: {
product: {
price: 699.99,
include: true
}
}
}
),
createTest(
/* GraphQL */
`
query ($bool: Boolean = false) {
product {
price
skip
}
}
`,
{
data: {
product: {
price: 699.99,
skip: true
}
}
}
)
];
var index = serve("include-skip", [a, b, c], test);
export { index as default };