Skip to content
File

Blob: tests/worker/lib/published-pages.workers.test.ts

typescript48 lines
1import { beforeEach, describe, expect, it } from "vitest";
2import { ulid } from "ulid";
3 
4import { publishedPages } from "@/worker/db/d1/schema";
5import { resolvePublishedMentions } from "@/worker/lib/published-pages";
6import { getDb, resetD1Tables } from "@tests/worker/helpers/db";
7import { seedPage, seedUser, seedWorkspace } from "@tests/worker/helpers/seeds";
8 
9describe("published page D1 resolvers", () => {
10 beforeEach(async () => {
11 await resetD1Tables();
12 });
13 
14 it("resolves large mention sets in D1-sized batches", async () => {
15 const owner = await seedUser();
16 const ws = await seedWorkspace({ owner_id: owner.id });
17 const mentionIds = Array.from({ length: 105 }, () => ulid());
18 const reachablePageId = mentionIds[104]!;
19 const reachablePage = await seedPage({
20 id: reachablePageId,
21 workspace_id: ws.id,
22 created_by: owner.id,
23 title: "Published Reference",
24 icon: "P",
25 });
26 
27 await getDb()
28 .insert(publishedPages)
29 .values({ workspace_id: ws.id, page_id: reachablePage.id, published_by: owner.id });
30 
31 const mentions = await resolvePublishedMentions(getDb(), ws.id, mentionIds);
32 
33 expect(mentions.size).toBe(mentionIds.length);
34 expect(mentions.get(reachablePageId)).toEqual({
35 pageId: reachablePageId,
36 reachable: true,
37 title: "Published Reference",
38 icon: "P",
39 });
40 expect(mentions.get(mentionIds[0]!)).toEqual({
41 pageId: mentionIds[0]!,
42 reachable: false,
43 title: null,
44 icon: null,
45 });
46 });
47});