import React from "react"; import { render, screen } from "@testing-library/react"; import { describe, it, expect, vi } from "vitest"; import ContentBanner from "../../app/components/sections/ContentBanner"; import type { BlogPost } from "../../lib/content"; vi.mock("next/link", () => ({ default: ({ children, href, ...props }: { children?: React.ReactNode; href?: string; [key: string]: unknown; }) => ( {children} ), })); vi.mock("../../lib/assetUtils", async (importOriginal) => { const actual = (await importOriginal()) as typeof import("../../lib/assetUtils"); return { ...actual, getAssetPath: vi.fn((asset: string) => `/assets/${asset}`), }; }); const mockPost: BlogPost = { slug: "test-article", frontmatter: { title: "Test Article", description: "Test description", author: "Test Author", date: "2025-04-15", }, content: "", htmlContent: "", filePath: "test-article.md", lastModified: new Date("2025-04-15"), }; // Pure presentational; no provider context needed. describe("ContentBanner", () => { it("renders without crashing", () => { render(); }); it("renders article title", () => { render(); expect( screen.getByRole("heading", { name: "Test Article" }), ).toBeInTheDocument(); }); it("renders article description", () => { render(); expect(screen.getByText("Test description")).toBeInTheDocument(); }); });