import { afterAll, describe, expect, test } from "bun:test"; import { createD1Driver } from "../modules/database/src/adapters/d1.ts"; const server = Bun.serve({ port: 0, async fetch(request) { const payload = (await request.json()) as { sql?: string; params?: unknown[]; }; if (payload.sql?.startsWith("SELECT")) { return Response.json({ success: true, result: [ { results: [ { id: "1", title: "First", position: 1 }, ], success: true, meta: { changes: 1 }, }, ], }); } return Response.json({ success: true, result: [{ results: [], success: true, meta: { changes: 1 } }], }); }, }); afterAll(() => { server.stop(true); }); describe("d1", () => { test("sends the statements to the api", async () => { const driver = createD1Driver({ accountId: "account", databaseId: "database", apiToken: "token", endpoint: `http://localhost:${server.port}/query`, }); const rows = await driver.query("SELECT * FROM notes"); expect(rows).toHaveLength(1); expect(rows[0]?.title).toBe("First"); const result = await driver.execute("INSERT INTO notes VALUES (1)"); expect(result.changes).toBe(1); await driver.close(); }); test("uses the placeholders of sqlite", () => { const driver = createD1Driver({ accountId: "account", databaseId: "database", apiToken: "token", }); expect(driver.placeholder(1)).toBe("?"); expect(driver.dialect).toBe("sqlite"); }); });