Skip to content
File

Blob: tests/worker/queues/workspace-sites-cleanup.workers.test.ts

typescript35 lines
1import { env } from "cloudflare:workers";
2import { beforeEach, describe, expect, it } from "vitest";
3 
4import { handleWorkspaceSitesCleanup } from "@/worker/queues/workspace-sites-cleanup";
5import { siteCoverKey } from "@/worker/sites/cover";
6 
7async function clearSitesBucket(): Promise<void> {
8 const listing = await env.SITES.list();
9 await Promise.all(listing.objects.map((object) => env.SITES.delete(object.key)));
10}
11 
12describe("handleWorkspaceSitesCleanup", () => {
13 beforeEach(async () => {
14 await clearSitesBucket();
15 });
16 
17 it("deletes every Sites artifact under the workspace prefix", async () => {
18 const coverKey = siteCoverKey("ws-one", "page-cover");
19 const otherWorkspaceCoverKey = siteCoverKey("ws-two", "page-cover");
20 await env.SITES.put("ws-one/page-a.json", "{}");
21 await env.SITES.put("ws-one/page-b.json", "{}");
22 await env.SITES.put(coverKey, "PNG");
23 await env.SITES.put("ws-two/page-c.json", "{}");
24 await env.SITES.put(otherWorkspaceCoverKey, "PNG");
25 
26 await expect(handleWorkspaceSitesCleanup("ws-one", env)).resolves.toEqual({ kind: "ok" });
27 
28 await expect(env.SITES.get("ws-one/page-a.json")).resolves.toBeNull();
29 await expect(env.SITES.get("ws-one/page-b.json")).resolves.toBeNull();
30 await expect(env.SITES.get(coverKey)).resolves.toBeNull();
31 await expect(env.SITES.get("ws-two/page-c.json")).resolves.not.toBeNull();
32 await expect(env.SITES.get(otherWorkspaceCoverKey)).resolves.not.toBeNull();
33 });
34});