62 lines
2.4 KiB
TypeScript
62 lines
2.4 KiB
TypeScript
import { describe, expect, it } from "@suaveplan/testing/runner";
|
|
import { SurrealAdapter } from "../../src/adapter/adapter/adapter.js";
|
|
import { SURREAL_CODES } from "../../src/errors/index.js";
|
|
import { connectAdapter } from "./helpers/connect.js";
|
|
import { randomNamespace } from "./helpers/random-ns.js";
|
|
import { surrealUnavailable } from "./integration-setup.js";
|
|
|
|
describe.skipIf(surrealUnavailable)(
|
|
"SurrealAdapter — integration (real SurrealDB v3.0.4)",
|
|
() => {
|
|
it("connect → query RETURN { n: 1 } → disconnect", async () => {
|
|
// SurrealDB v3 dropped table-less SELECT — `SELECT 1 AS n` requires
|
|
// FROM in v3. RETURN evaluates an expression and returns it directly.
|
|
const { adapter } = await connectAdapter();
|
|
try {
|
|
const rows = await adapter.query<{ n: number }>(
|
|
"RETURN { n: 1 }"
|
|
);
|
|
expect(rows).toEqual([{ n: 1 }]);
|
|
} finally {
|
|
await adapter.disconnect();
|
|
}
|
|
}, 30000);
|
|
|
|
it("parameterised query round-trips values (regression for content-drop class)", async () => {
|
|
const { adapter } = await connectAdapter();
|
|
try {
|
|
const rows = await adapter.query<{ v: string }>(
|
|
"RETURN { v: $p0 }",
|
|
["abc"]
|
|
);
|
|
expect(rows).toEqual([{ v: "abc" }]);
|
|
} finally {
|
|
await adapter.disconnect();
|
|
}
|
|
}, 30000);
|
|
|
|
it("DDL persists across queries on the live engine", async () => {
|
|
const ns = randomNamespace();
|
|
const { adapter } = await connectAdapter({
|
|
namespaceOverride: ns,
|
|
databaseOverride: ns,
|
|
});
|
|
try {
|
|
await adapter.execute("DEFINE TABLE t SCHEMAFULL");
|
|
const info =
|
|
await adapter.query<Record<string, unknown>>("INFO FOR DB");
|
|
expect(info.length).toBeGreaterThan(0);
|
|
} finally {
|
|
await adapter.disconnect();
|
|
}
|
|
}, 30000);
|
|
|
|
it("query before connect throws DB.NOT_CONNECTED", async () => {
|
|
const adapter = new SurrealAdapter();
|
|
await expect(adapter.query("SELECT 1")).rejects.toMatchObject({
|
|
code: SURREAL_CODES.NOT_CONNECTED,
|
|
});
|
|
}, 5000);
|
|
}
|
|
);
|