export class MockPool {
private mocks: Record<string, (params: any[]) => Record<string, any>[]> = {};
mockQuery(query: string, rows: (params: any[]) => Record<string, any>[]) {
this.mocks[query] = rows;
}
async query(
query: string | QueryConfig,
values?: any[]
): Promise<Partial<QueryResult>> {
let queryConfig: QueryConfig;
if (typeof query === "string") {
queryConfig = { text: query, values };
} else {
queryConfig = { ...query };
if (values) {
queryConfig.values = values;
}
}
const mock = this.mocks[queryConfig.text];
if (!mock) {
throw new Error(`Missing mock for query ${queryConfig.text}`);
}
const rows = mock(queryConfig.values ?? []);
return {
rowCount: rows.length,
rows,
};
}
}
export class MockPool {
private mocks: Record<string, (params: any[]) => Record<string, any>[]> = {};
mockQuery(query: string, rows: (params: any[]) => Record<string, any>[]) {
this.mocks[query] = rows;
}
async query(
query: string | QueryConfig,
values?: any[]
): Promise<Partial<QueryResult>> {
let queryConfig: QueryConfig;
if (typeof query === "string") {
queryConfig = { text: query, values };
} else {
queryConfig = { ...query };
if (values) {
queryConfig.values = values;
}
}
const mock = this.mocks[queryConfig.text];
if (!mock) {
throw new Error(`Missing mock for query ${queryConfig.text}`);
}
const rows = mock(queryConfig.values ?? []);
return {
rowCount: rows.length,
rows,
};
}
}