graphile-test
Version:
PostGraphile Testing
174 lines (173 loc) • 6.25 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getConnectionsWithTiming = exports.getConnectionsWithLogging = exports.getConnectionsUnwrapped = exports.getConnections = exports.getConnectionsObjectWithTiming = exports.getConnectionsObjectWithLogging = exports.getConnectionsObjectUnwrapped = exports.getConnectionsObject = void 0;
const pgsql_test_1 = require("pgsql-test");
const graphile_test_1 = require("./graphile-test");
// Core unwrapping utility
const unwrap = (res) => {
if (res.errors?.length) {
throw new Error(JSON.stringify(res.errors, null, 2));
}
if (!res.data) {
throw new Error('No data returned from GraphQL query');
}
return res.data;
};
// Base connection setup - shared across all variants
const createConnectionsBase = async (input, seedAdapters) => {
const conn = await (0, pgsql_test_1.getConnections)(input, seedAdapters);
const { pg, db, teardown: dbTeardown } = conn;
const gqlContext = (0, graphile_test_1.GraphQLTest)(input, conn);
await gqlContext.setup();
const teardown = async () => {
await gqlContext.teardown();
await dbTeardown();
};
const baseQuery = (opts) => gqlContext.query(opts);
const baseQueryPositional = (query, variables, commit, reqOptions) => gqlContext.query({ query, variables, commit, reqOptions });
return {
pg,
db,
teardown,
baseQuery,
baseQueryPositional
};
};
// ============================================================================
// REGULAR QUERY VERSIONS
// ============================================================================
/**
* Creates connections with raw GraphQL responses
*/
const getConnectionsObject = async (input, seedAdapters) => {
const { pg, db, teardown, baseQuery } = await createConnectionsBase(input, seedAdapters);
return {
pg,
db,
teardown,
query: baseQuery
};
};
exports.getConnectionsObject = getConnectionsObject;
/**
* Creates connections with unwrapped GraphQL responses (throws on errors)
*/
const getConnectionsObjectUnwrapped = async (input, seedAdapters) => {
const { pg, db, teardown, baseQuery } = await createConnectionsBase(input, seedAdapters);
const query = async (opts) => unwrap(await baseQuery(opts));
return {
pg,
db,
teardown,
query
};
};
exports.getConnectionsObjectUnwrapped = getConnectionsObjectUnwrapped;
/**
* Creates connections with logging for GraphQL queries
*/
const getConnectionsObjectWithLogging = async (input, seedAdapters) => {
const { pg, db, teardown, baseQuery } = await createConnectionsBase(input, seedAdapters);
const query = async (opts) => {
console.log('Executing GraphQL query:', opts.query);
const result = await baseQuery(opts);
console.log('GraphQL result:', result);
return result;
};
return {
pg,
db,
teardown,
query
};
};
exports.getConnectionsObjectWithLogging = getConnectionsObjectWithLogging;
/**
* Creates connections with timing for GraphQL queries
*/
const getConnectionsObjectWithTiming = async (input, seedAdapters) => {
const { pg, db, teardown, baseQuery } = await createConnectionsBase(input, seedAdapters);
const query = async (opts) => {
const start = Date.now();
const result = await baseQuery(opts);
const duration = Date.now() - start;
console.log(`GraphQL query took ${duration}ms`);
return result;
};
return {
pg,
db,
teardown,
query
};
};
exports.getConnectionsObjectWithTiming = getConnectionsObjectWithTiming;
// ============================================================================
// POSITIONAL QUERY VERSIONS
// ============================================================================
/**
* Creates connections with raw GraphQL responses (positional API)
*/
const getConnections = async (input, seedAdapters) => {
const { pg, db, teardown, baseQueryPositional } = await createConnectionsBase(input, seedAdapters);
return {
pg,
db,
teardown,
query: baseQueryPositional
};
};
exports.getConnections = getConnections;
/**
* Creates connections with unwrapped GraphQL responses (positional API, throws on errors)
*/
const getConnectionsUnwrapped = async (input, seedAdapters) => {
const { pg, db, teardown, baseQueryPositional } = await createConnectionsBase(input, seedAdapters);
const query = async (query, variables, commit, reqOptions) => unwrap(await baseQueryPositional(query, variables, commit, reqOptions));
return {
pg,
db,
teardown,
query
};
};
exports.getConnectionsUnwrapped = getConnectionsUnwrapped;
/**
* Creates connections with logging for GraphQL queries (positional API)
*/
const getConnectionsWithLogging = async (input, seedAdapters) => {
const { pg, db, teardown, baseQueryPositional } = await createConnectionsBase(input, seedAdapters);
const query = async (query, variables, commit, reqOptions) => {
console.log('Executing positional GraphQL query:', query);
const result = await baseQueryPositional(query, variables, commit, reqOptions);
console.log('GraphQL result:', result);
return result;
};
return {
pg,
db,
teardown,
query
};
};
exports.getConnectionsWithLogging = getConnectionsWithLogging;
/**
* Creates connections with timing for GraphQL queries (positional API)
*/
const getConnectionsWithTiming = async (input, seedAdapters) => {
const { pg, db, teardown, baseQueryPositional } = await createConnectionsBase(input, seedAdapters);
const query = async (query, variables, commit, reqOptions) => {
const start = Date.now();
const result = await baseQueryPositional(query, variables, commit, reqOptions);
const duration = Date.now() - start;
console.log(`Positional GraphQL query took ${duration}ms`);
return result;
};
return {
pg,
db,
teardown,
query
};
};
exports.getConnectionsWithTiming = getConnectionsWithTiming;