import { describe, it, expect, afterEach } from "vitest"; import { render, screen, cleanup } from "@testing-library/react"; import { PublicPageRenderer } from "@/features/editor/components/PublicPageRenderer"; import type { Block } from "@/features/editor/state/editorStore"; // PublicPageRenderer 이미지 블록 TDD // - src 가 비어 있을 때는 를 렌더하지 않아 Next.js 경고를 피한다. // - src 가 비어 있지 않을 때는 정상적으로 를 렌더한다. describe("PublicPageRenderer - image block", () => { afterEach(() => { cleanup(); }); it("src 가 비어 있으면 img 요소를 렌더하지 않아야 한다", () => { const blocks: Block[] = [ { id: "img_empty", type: "image", props: { src: "", alt: "빈 이미지", align: "center", widthMode: "auto", borderRadius: "md", }, } as any, ]; render(); const img = screen.queryByRole("img", { name: "빈 이미지" }); expect(img).toBeNull(); }); it("src 가 비어 있지 않으면 img 요소를 렌더해야 한다", () => { const blocks: Block[] = [ { id: "img_non_empty", type: "image", props: { src: "https://example.com/test.png", alt: "정상 이미지", align: "center", widthMode: "auto", borderRadius: "md", }, } as any, ]; render(); const img = screen.getByRole("img", { name: "정상 이미지" }) as HTMLImageElement; expect(img).toBeTruthy(); expect(img.src).toContain("https://example.com/test.png"); }); });