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>("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); } );