import { describe, expect, it } from "vitest"; import { getAllBlogPosts } from "../../lib/content"; import { extractSectionBannerFill, resolveBlogPageBackgroundColor, } from "../../lib/blogSectionBackground"; describe("extractSectionBannerFill", () => { it("reads the first 1920×672 rect fill and ignores a later clip-path rect", () => { const svg = ` `; expect(extractSectionBannerFill(svg)).toBe("#ECC98E"); }); it("returns null when there is no section rect", () => { expect(extractSectionBannerFill("")).toBeNull(); }); }); describe("resolveBlogPageBackgroundColor", () => { it("uses the section SVG fill when the banner file exists", () => { expect( resolveBlogPageBackgroundColor({ slug: "making-decisions-without-hierarchy", frontmatterColor: "#F3F3F1", }), ).toBe("#ECC98E"); }); it("falls back to frontmatter when there is no section SVG", () => { expect( resolveBlogPageBackgroundColor({ slug: "not-a-real-article", frontmatterColor: "#F4F3F1", }), ).toBe("#F4F3F1"); }); }); describe("parsed blog posts", () => { it("uses each article’s section banner fill as the page background", () => { const posts = getAllBlogPosts(); expect(posts.length).toBeGreaterThan(0); for (const post of posts) { const fromBanner = resolveBlogPageBackgroundColor({ slug: post.slug, bannerFileName: post.frontmatter.banner?.horizontal, frontmatterColor: "#000000", }); if (fromBanner === "#000000") { continue; } expect(post.frontmatter.background?.color).toBe(fromBanner); } }); });