import { beforeEach, describe, expect, mock, test } from "bun:test";
import { fakeD1 } from "../metering/fake-d1.test-helper";
let d1 = fakeD1();
const fakeEnv: Record<string, unknown> = {
get DB() {
return d1.binding;
},
CACHE_BYTES_PER_REPO: "1000",
};
mock.module("cloudflare:workers", () => ({ DurableObject: class {}, env: fakeEnv, waitUntil: () => undefined }));
const { assertCacheFits } = await import("./cache-api");
beforeEach(() => {
d1 = fakeD1();
});
describe("cache quota", () => {
test("in-flight reservations count, so concurrent saves can't overshoot", async () => {
d1.db.exec("INSERT INTO action_caches VALUES ('r1', 600, 'a'), ('r1', -300, 'b')");
await assertCacheFits("r1");
d1.db.exec("INSERT INTO action_caches VALUES ('r1', -200, 'c')");
await expect(assertCacheFits("r1")).rejects.toMatchObject({ status: 413 });
});
});