import { describe, expect, it } from "vitest"; import { getAllBlogPosts } from "../../lib/content"; import { buildPublicSitemap } from "../../lib/publicSitemap"; import { PRODUCTION_SITE_ORIGIN, sitemapUrl } from "../../lib/siteMetadata"; import { USE_CASE_DETAIL_SLUGS } from "../../lib/useCaseSyntheticPost"; describe("buildPublicSitemap", () => { it("lists public marketing routes, blog posts, and use cases", () => { const urls = buildPublicSitemap().map((entry) => entry.url); expect(urls).toContain(PRODUCTION_SITE_ORIGIN); expect(urls).toContain(sitemapUrl("/about")); expect(urls).toContain(sitemapUrl("/learn")); expect(urls).toContain(sitemapUrl("/templates")); expect(urls).toContain(sitemapUrl("/blog")); expect(urls).toContain(sitemapUrl("/use-cases")); expect(urls).toContain(sitemapUrl("/how-it-works")); expect(urls).toContain(sitemapUrl("/privacy")); expect(urls).toContain(sitemapUrl("/terms")); expect(urls).toContain(sitemapUrl("/cookies")); for (const post of getAllBlogPosts()) { expect(urls).toContain(sitemapUrl(`/blog/${post.slug}`)); } for (const slug of USE_CASE_DETAIL_SLUGS) { expect(urls).toContain(sitemapUrl(`/use-cases/${slug}`)); expect(urls).toContain(sitemapUrl(`/use-cases/${slug}/rule`)); } }); it("omits signed-in, admin, and API routes", () => { const urls = buildPublicSitemap().map((entry) => entry.url); expect(urls.some((url) => url.includes("/login"))).toBe(false); expect(urls.some((url) => url.includes("/profile"))).toBe(false); expect(urls.some((url) => url.includes("/create"))).toBe(false); expect(urls.some((url) => url.includes("/monitor"))).toBe(false); expect(urls.some((url) => url.includes("/api/"))).toBe(false); }); });