64 lines
1.4 KiB
TypeScript
64 lines
1.4 KiB
TypeScript
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");
|
|
});
|
|
});
|