import { describe, it, expect } from "vitest";
import { render } from "@testing-library/react";
import { PublicPageRenderer } from "@/features/editor/components/PublicPageRenderer";
import type { Block } from "@/features/editor/state/editorStore";
// 프리뷰 렌더러가 상위 컨테이너(프리뷰 캔버스)의 배경색을 덮어쓰지 않도록 하는 TDD
// - 루트 컨테이너는 레이아웃/텍스트 색상만 담당하고, 고정 배경색(bg-slate-950)은 사용하지 않아야 한다.
describe("PublicPageRenderer - 배경색 위임", () => {
it("루트 컨테이너는 bg-slate-950 같은 고정 배경 클래스 없이 렌더링되어야 한다", () => {
const blocks: Block[] = [];
const { container } = render();
const root = container.firstElementChild as HTMLElement | null;
expect(root).not.toBeNull();
const className = root!.getAttribute("class") ?? "";
expect(className).not.toContain("bg-slate-950");
expect(className).not.toContain("text-slate-50");
});
it("루트 텍스트/버튼 블록 영역은 고정 bg-slate-950 배경 대신 캔버스 배경을 그대로 보여야 한다", () => {
const blocks: Block[] = [
{
id: "text_root",
type: "text",
props: {
text: "텍스트",
align: "left",
size: "base",
},
} as any,
{
id: "button_root",
type: "button",
props: {
label: "버튼",
href: "#",
align: "left",
},
} as any,
];
const { container } = render();
// 섹션 블록이 하나도 없으므로, 첫 번째 은 루트 텍스트/버튼 블록을 감싸는 래퍼다.
const firstSection = container.querySelector("section");
expect(firstSection).not.toBeNull();
const className = firstSection!.getAttribute("class") ?? "";
expect(className).not.toContain("bg-slate-950");
});
});