supabase-test
Version:
supabase-test offers isolated, role-aware, and rollback-friendly PostgreSQL environments for integration tests — giving developers realistic test coverage without external state pollution
50 lines (49 loc) • 2.03 kB
TypeScript
import { Client, QueryResult } from 'pg';
import { PgConfig } from 'pg-env';
import { AuthOptions, PgTestConnectionOptions } from '@launchql/types';
export type PgTestClientOpts = {
deferConnect?: boolean;
trackConnect?: (p: Promise<any>) => void;
} & Partial<PgTestConnectionOptions>;
export declare class PgTestClient {
config: PgConfig;
client: Client;
private opts;
private ctxStmts;
private contextSettings;
private _ended;
private connectPromise;
constructor(config: PgConfig, opts?: PgTestClientOpts);
private ensureConnected;
close(): Promise<void>;
begin(): Promise<void>;
savepoint(name?: string): Promise<void>;
rollback(name?: string): Promise<void>;
commit(): Promise<void>;
beforeEach(): Promise<void>;
afterEach(): Promise<void>;
setContext(ctx: Record<string, string | null>): void;
/**
* Set authentication context for the current session.
* Configures role and user ID using cascading defaults from options → opts.auth → RoleMapping.
*/
auth(options?: AuthOptions): void;
/**
* Commit current transaction to make data visible to other connections, then start fresh transaction.
* Maintains test isolation by creating a savepoint and reapplying session context.
*/
publish(): Promise<void>;
/**
* Clear all session context variables and reset to default anonymous role.
*/
clearContext(): void;
any<T = any>(query: string, values?: any[]): Promise<T[]>;
one<T = any>(query: string, values?: any[]): Promise<T>;
oneOrNone<T = any>(query: string, values?: any[]): Promise<T | null>;
many<T = any>(query: string, values?: any[]): Promise<T[]>;
manyOrNone<T = any>(query: string, values?: any[]): Promise<T[]>;
none(query: string, values?: any[]): Promise<void>;
result(query: string, values?: any[]): Promise<import('pg').QueryResult>;
query<T = any>(query: string, values?: any[]): Promise<QueryResult<T>>;
ctxQuery(): Promise<void>;
}