mirror of
https://github.com/Kaelio/ktx.git
synced 2026-06-10 08:05:14 +02:00
59 lines
1.7 KiB
TypeScript
59 lines
1.7 KiB
TypeScript
import { describe, expect, it, vi } from 'vitest';
|
|
import { createDefaultLocalQueryExecutor } from '../../../src/context/connections/local-query-executor.js';
|
|
|
|
describe('createDefaultLocalQueryExecutor', () => {
|
|
it('dispatches postgres and sqlite drivers to their executors', async () => {
|
|
const postgres = {
|
|
execute: vi.fn(async () => ({
|
|
headers: ['pg'],
|
|
rows: [[1]],
|
|
totalRows: 1,
|
|
command: 'SELECT',
|
|
rowCount: 1,
|
|
})),
|
|
};
|
|
const sqlite = {
|
|
execute: vi.fn(async () => ({
|
|
headers: ['sqlite'],
|
|
rows: [[2]],
|
|
totalRows: 1,
|
|
command: 'SELECT',
|
|
rowCount: 1,
|
|
})),
|
|
};
|
|
const executor = createDefaultLocalQueryExecutor({ postgres, sqlite });
|
|
|
|
await expect(
|
|
executor.execute({
|
|
connectionId: 'pg',
|
|
connection: { driver: 'postgres' },
|
|
sql: 'select 1',
|
|
}),
|
|
).resolves.toMatchObject({ headers: ['pg'] });
|
|
await expect(
|
|
executor.execute({
|
|
connectionId: 'local',
|
|
connection: { driver: 'sqlite' },
|
|
sql: 'select 1',
|
|
}),
|
|
).resolves.toMatchObject({ headers: ['sqlite'] });
|
|
|
|
expect(postgres.execute).toHaveBeenCalledTimes(1);
|
|
expect(sqlite.execute).toHaveBeenCalledTimes(1);
|
|
});
|
|
|
|
it('rejects unsupported local execution drivers', async () => {
|
|
const executor = createDefaultLocalQueryExecutor({
|
|
postgres: { execute: vi.fn() },
|
|
sqlite: { execute: vi.fn() },
|
|
});
|
|
|
|
await expect(
|
|
executor.execute({
|
|
connectionId: 'warehouse',
|
|
connection: { driver: 'snowflake' },
|
|
sql: 'select 1',
|
|
}),
|
|
).rejects.toThrow('No local query executor is configured for driver "snowflake".');
|
|
});
|
|
});
|