File
Blob: tests/worker/queues/workspace-sites-cleanup.workers.test.ts
| 1 | import { env } from "cloudflare:workers"; |
| 2 | import { beforeEach, describe, expect, it } from "vitest"; |
| 3 | |
| 4 | import { handleWorkspaceSitesCleanup } from "@/worker/queues/workspace-sites-cleanup"; |
| 5 | import { siteCoverKey } from "@/worker/sites/cover"; |
| 6 | |
| 7 | async 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 | |
| 12 | describe("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 | }); |