import { describe, expect, mock, spyOn, test } from "bun:test";
mock.module("cloudflare:workers", () => ({ env: {}, waitUntil: () => undefined }));
const { deletionHalt, sweepMode } = await import("./artifacts-sweep");
describe("orphan sweep delete caps (GIT-P3)", () => {
test("a few orphans on a large page may be deleted", () => {
expect(deletionHalt(5, 200, 0)).toBeNull();
expect(deletionHalt(3, 10, 0)).toBeNull();
});
test("more than 5% of a page halts", () => {
expect(deletionHalt(11, 200, 0)).toContain("over 5%");
expect(deletionHalt(4, 10, 0)).toContain("over 5%");
});
test("more than 20 in a run halts", () => {
expect(deletionHalt(5, 200, 16)).toContain("more than 20");
});
});
describe("sweepMode", () => {
test("delete needs an exclusive namespace, a real host and no dev flag", () => {
const log = spyOn(console, "error").mockImplementation(() => undefined);
const base = { mode: "delete", exclusive: "true", publicUrl: "https://gitfor.dev" };
expect(sweepMode(base)).toBe("delete");
expect(sweepMode({ ...base, local: "true" })).toBe("report");
expect(sweepMode({ ...base, publicUrl: "http://localhost:3000" })).toBe("report");
expect(sweepMode({ ...base, exclusive: "false" })).toBe("report");
log.mockRestore();
});
});