File
Blob: tests/sites/render-context.ts
| 1 | import type { SitesReactRenderContext } from "@/sites/react-render-context"; |
| 2 | |
| 3 | export type TestSitesPageRenderContext = Extract<SitesReactRenderContext, { kind: "page" }>; |
| 4 | |
| 5 | type TestSitesPageRenderContextOverrides = Omit<Partial<TestSitesPageRenderContext>, "assets" | "kind" | "page"> & { |
| 6 | assets?: Partial<TestSitesPageRenderContext["assets"]>; |
| 7 | page?: Partial<TestSitesPageRenderContext["page"]>; |
| 8 | }; |
| 9 | |
| 10 | export const TEST_SITE_DOCUMENT_ASSETS: TestSitesPageRenderContext["assets"] = { |
| 11 | stylesheetHref: "/site-assets/sites-test.css", |
| 12 | fontStylesheetHref: "/site-assets/fonts-test.css", |
| 13 | scriptSrc: "/site-assets/sites-entry-test.js", |
| 14 | modulePreloadHrefs: ["/site-assets/sites-import-test.js"], |
| 15 | }; |
| 16 | |
| 17 | export function createTestSitesPageRenderContext( |
| 18 | overrides: TestSitesPageRenderContextOverrides = {}, |
| 19 | ): TestSitesPageRenderContext { |
| 20 | const context: TestSitesPageRenderContext = { |
| 21 | kind: "page", |
| 22 | assets: TEST_SITE_DOCUMENT_ASSETS, |
| 23 | headingAnchorIds: [], |
| 24 | resolvePageMention: () => ({ label: "Restricted", href: null, kind: "restricted" }), |
| 25 | page: { |
| 26 | title: "Hello Sites", |
| 27 | icon: "๐", |
| 28 | coverUrl: null, |
| 29 | ogImage: null, |
| 30 | outline: [], |
| 31 | metrics: { words: 1, characters: 4 }, |
| 32 | description: "Body excerpt for search snippets", |
| 33 | canonicalUrl: "https://acme.sites.test/", |
| 34 | site: { |
| 35 | workspaceName: "bland", |
| 36 | workspaceIcon: "๐", |
| 37 | currentIsHome: true, |
| 38 | homeHref: "/", |
| 39 | }, |
| 40 | }, |
| 41 | }; |
| 42 | |
| 43 | return { |
| 44 | ...context, |
| 45 | ...overrides, |
| 46 | kind: "page", |
| 47 | assets: { ...context.assets, ...overrides.assets }, |
| 48 | page: { ...context.page, ...overrides.page }, |
| 49 | }; |
| 50 | } |