import { beforeEach, describe, expect, mock, test } from "bun:test";
import { Database } from "bun:sqlite";
import { readFileSync } from "node:fs";
import { fakeD1 } from "./fake-d1.test-helper";
let d1 = fakeD1();
mock.module("cloudflare:workers", () => ({
env: {
get DB() {
return d1.binding;
},
},
waitUntil: () => undefined,
}));
const { ACCOUNT_SCHEMA } = await import("../scoped-db/schema.gen");
const { leaderboardRows, publishUsageLeaderboard } = await import("./leaderboard");
const NOW = Date.parse("2026-10-01T00:03:00Z");
function account(id: string, usage: Array<[string, string, number]>) {
const db = new Database(":memory:");
for (const statement of ACCOUNT_SCHEMA) db.run(statement);
for (const [meter, period, quantity] of usage) {
db.query(
"INSERT INTO usage_periods (account_id, meter, period, quantity, reserved, updated_at) VALUES (?, ?, ?, ?, 0, 0)",
).run(id, meter, period, quantity);
}
return {
db,
sql: {
exec: (query: string, ...params: Array<string | number | null>) => {
const rows = db.query(query).all(...params) as never[];
return { toArray: () => rows };
},
},
};
}
beforeEach(() => {
d1 = fakeD1();