UNPKG

@graphql-hive/federation-gateway-audit

Version:
1,085 lines (1,080 loc) 20.6 kB
import { createTest } from "../../testkit.js"; export default [ createTest( /* GraphQL */ ` query { products { id dimensions { size weight } } } `, { data: { products: [ { id: "p1", dimensions: { size: "small", weight: 0.5, }, }, { id: "p3", dimensions: { size: "small", weight: 0.6, }, }, { id: "p2", dimensions: { size: "small", weight: 0.2, }, }, { id: "p4", dimensions: { size: "small", weight: 0.3, }, }, ], }, }, ), createTest( /* GraphQL */ ` query { similar(id: "p1") { id sku } } `, { data: { similar: [ { id: "p3", sku: "sku-3", }, ], }, }, ), createTest( /* GraphQL */ ` query { book: similar(id: "p1") { id sku delivery(zip: "1234") { fastestDelivery estimatedDelivery } } magazine: similar(id: "p2") { id sku delivery(zip: "1234") { fastestDelivery estimatedDelivery } } } `, { data: { book: [ { id: "p3", sku: "sku-3", delivery: { fastestDelivery: "same day", estimatedDelivery: "1 day", }, }, ], magazine: [ { id: "p4", sku: "sku-4", delivery: { fastestDelivery: "same day", estimatedDelivery: "1 day", }, }, ], }, }, ), createTest( /* GraphQL */ ` { products { sku ... on Product { sku } ... on Book { sku } ... on Magazine { sku } ... on Similar { __typename type: __typename } } } `, { data: { products: [ { sku: "sku-1", __typename: "Book", type: "Book", }, { sku: "sku-3", __typename: "Book", type: "Book", }, { sku: "sku-2", __typename: "Magazine", type: "Magazine", }, { sku: "sku-4", __typename: "Magazine", type: "Magazine", }, ], }, }, ), createTest( /* GraphQL */ ` { products { author: createdBy { email totalProductsCreated } ... on Magazine { title } } } `, { data: { products: [ { author: { email: "u1@example.com", totalProductsCreated: 2, }, }, { author: { email: "u2@example.com", totalProductsCreated: 2, }, }, { author: { email: "u1@example.com", totalProductsCreated: 2, }, title: "Magazine 1", }, { author: { email: "u2@example.com", totalProductsCreated: 2, }, title: "Magazine 2", }, ], }, }, ), createTest( /* GraphQL */ ` { products { id reviews { product { sku ... on Magazine { title } ... on Book { reviewsCount } } } } } `, { data: { products: [ { id: "p1", reviews: [ { product: { sku: "sku-1", reviewsCount: 2, }, }, { product: { sku: "sku-1", reviewsCount: 2, }, }, ], }, { id: "p3", reviews: [], }, { id: "p2", reviews: [ { product: { sku: "sku-2", title: "Magazine 1", }, }, ], }, { id: "p4", reviews: [], }, ], }, }, ), createTest( /* GraphQL */ ` { products { id reviews { id } } } `, { data: { products: [ { id: "p1", reviews: [ { id: 1, }, { id: 2, }, ], }, { id: "p3", reviews: [], }, { id: "p2", reviews: [ { id: 3, }, ], }, { id: "p4", reviews: [], }, ], }, }, ), createTest( /* GraphQL */ ` query ($title: Boolean = true) { products { id reviews { product { id ... on Book @include(if: $title) { title } ... on Magazine { sku } } } } } `, { data: { products: [ { id: "p1", reviews: [ { product: { id: "p1", title: "Book 1", }, }, { product: { id: "p1", title: "Book 1", }, }, ], }, { id: "p3", reviews: [], }, { id: "p2", reviews: [ { product: { id: "p2", sku: "sku-2", }, }, ], }, { id: "p4", reviews: [], }, ], }, }, ), createTest( /* GraphQL */ ` query ($title: Boolean = false) { products { id reviews { product { id ... on Book @include(if: $title) { title } ... on Magazine { sku } } } } } `, { data: { products: [ { id: "p1", reviews: [ { product: { id: "p1", }, }, { product: { id: "p1", }, }, ], }, { id: "p3", reviews: [], }, { id: "p2", reviews: [ { product: { id: "p2", sku: "sku-2", }, }, ], }, { id: "p4", reviews: [], }, ], }, }, ), createTest( /* GraphQL */ ` query ($title: Boolean = false) { products { id reviews { product { id ... on Book @skip(if: $title) { title } ... on Magazine { sku } } } } } `, { data: { products: [ { id: "p1", reviews: [ { product: { id: "p1", title: "Book 1", }, }, { product: { id: "p1", title: "Book 1", }, }, ], }, { id: "p3", reviews: [], }, { id: "p2", reviews: [ { product: { id: "p2", sku: "sku-2", }, }, ], }, { id: "p4", reviews: [], }, ], }, }, ), createTest( /* GraphQL */ ` query ($title: Boolean = true) { products { id reviews { product { id ... on Book @skip(if: $title) { title } ... on Magazine { sku } } } } } `, { data: { products: [ { id: "p1", reviews: [ { product: { id: "p1", }, }, { product: { id: "p1", }, }, ], }, { id: "p3", reviews: [], }, { id: "p2", reviews: [ { product: { id: "p2", sku: "sku-2", }, }, ], }, { id: "p4", reviews: [], }, ], }, }, ), createTest( /* GraphQL */ ` query ($title: Boolean = true) { products { id reviews { product { id ... on Book @skip(if: $title) { title } ... on Book { sku } ... on Magazine { sku } } } } } `, { data: { products: [ { id: "p1", reviews: [ { product: { id: "p1", sku: "sku-1", }, }, { product: { id: "p1", sku: "sku-1", }, }, ], }, { id: "p3", reviews: [], }, { id: "p2", reviews: [ { product: { id: "p2", sku: "sku-2", }, }, ], }, { id: "p4", reviews: [], }, ], }, }, ), createTest( /* GraphQL */ ` query ($title: Boolean = false) { products { id reviews { product { id ... on Book @skip(if: $title) { title } ... on Book { sku } ... on Magazine { sku } } } } } `, { data: { products: [ { id: "p1", reviews: [ { product: { id: "p1", title: "Book 1", sku: "sku-1", }, }, { product: { id: "p1", title: "Book 1", sku: "sku-1", }, }, ], }, { id: "p3", reviews: [], }, { id: "p2", reviews: [ { product: { id: "p2", sku: "sku-2", }, }, ], }, { id: "p4", reviews: [], }, ], }, }, ), createTest( /* GraphQL */ ` query ($title: Boolean = true) { products { id reviews { product { id ... on Book @include(if: $title) { title ... on Book { sku } } ... on Magazine { sku } } } } } `, { data: { products: [ { id: "p1", reviews: [ { product: { id: "p1", title: "Book 1", sku: "sku-1", }, }, { product: { id: "p1", title: "Book 1", sku: "sku-1", }, }, ], }, { id: "p3", reviews: [], }, { id: "p2", reviews: [ { product: { id: "p2", sku: "sku-2", }, }, ], }, { id: "p4", reviews: [], }, ], }, }, ), createTest( /* GraphQL */ ` query ($title: Boolean = true) { products { id reviews { product { id ... on Book @include(if: $title) { title ... on Book @skip(if: $title) { sku } } ... on Magazine { sku } } } } } `, { data: { products: [ { id: "p1", reviews: [ { product: { id: "p1", title: "Book 1", }, }, { product: { id: "p1", title: "Book 1", }, }, ], }, { id: "p3", reviews: [], }, { id: "p2", reviews: [ { product: { id: "p2", sku: "sku-2", }, }, ], }, { id: "p4", reviews: [], }, ], }, }, ), createTest( /* GraphQL */ ` { products { id reviews { product { id ... on Magazine { publisherType { ...Publisher } } ... on Book { publisherType { ...Publisher } } } } } } fragment Publisher on PublisherType { ... on Agency { id companyName } ... on Self { email } } `, { data: { products: [ { id: "p1", reviews: [ { product: { id: "p1", publisherType: { email: "u1@example.com", }, }, }, { product: { id: "p1", publisherType: { email: "u1@example.com", }, }, }, ], }, { id: "p3", reviews: [], }, { id: "p2", reviews: [ { product: { id: "p2", publisherType: { id: "a1", companyName: "Agency 1", }, }, }, ], }, { id: "p4", reviews: [], }, ], }, }, ), createTest( /* GraphQL */ ` { products { id reviews { product { id ... on Magazine { publisherType { ...Publisher } } ... on Book { publisherType { ...Publisher } } } } } } fragment Publisher on PublisherType { ... on Agency { id companyName } ... on Self { email } ... on Group { name } } `, { data: { products: [ { id: "p1", reviews: [ { product: { id: "p1", publisherType: { email: "u1@example.com", }, }, }, { product: { id: "p1", publisherType: { email: "u1@example.com", }, }, }, ], }, { id: "p3", reviews: [], }, { id: "p2", reviews: [ { product: { id: "p2", publisherType: { id: "a1", companyName: "Agency 1", }, }, }, ], }, { id: "p4", reviews: [], }, ], }, }, ), createTest( /* GraphQL */ ` { products { id reviews { product { id ... on Magazine { publisherType { ...Publisher } } ... on Book { publisherType { ...Publisher } } } } } } fragment Publisher on PublisherType { ... on Agency { emailObj: email { address } } ... on Self { emailStr: email } ... on Group { emailStr: email } } `, { data: { products: [ { id: "p1", reviews: [ { product: { id: "p1", publisherType: { emailStr: "u1@example.com", }, }, }, { product: { id: "p1", publisherType: { emailStr: "u1@example.com", }, }, }, ], }, { id: "p3", reviews: [], }, { id: "p2", reviews: [ { product: { id: "p2", publisherType: { emailObj: { address: "a1@example.com", }, }, }, }, ], }, { id: "p4", reviews: [], }, ], }, }, ), ];