Files
2026-05-27 23:47:53 +01:00

40 lines
1.3 KiB
TypeScript

/**
* connectAdapter — integration-test helper that resolves the live SurrealDB
* config from the fixture and returns a connected `SurrealAdapter`.
*
* @module
*/
import type { SurrealDBConfig } from "@suaveplan/testing-integration-surrealdb";
import { SurrealAdapter } from "../../../src/adapter/adapter/adapter.js";
import { inject } from "../integration-setup.js";
export interface ConnectedAdapter {
adapter: SurrealAdapter;
config: SurrealDBConfig;
}
/**
* Read the injected fixture config, instantiate `SurrealAdapter`, call
* `connect()`, and return both. Caller is responsible for `await
* adapter.disconnect()` in a `try/finally` so a failed assertion never leaks
* a WebSocket.
*
* `namespaceOverride` and `databaseOverride` allow per-test isolation against
* a shared container (env-bridge mode) — see `random-ns.ts`.
*/
export async function connectAdapter(opts?: {
namespaceOverride?: string;
databaseOverride?: string;
}): Promise<ConnectedAdapter> {
const config = inject("surrealdb");
const adapter = new SurrealAdapter({
url: config.url,
namespace: opts?.namespaceOverride ?? config.namespace,
database: opts?.databaseOverride ?? config.database,
username: config.username,
password: config.password,
});
await adapter.connect();
return { adapter, config };
}