67 lines
2.2 KiB
TypeScript
67 lines
2.2 KiB
TypeScript
import { describe, it, expect } from "vitest";
|
|
import type { SectionBlockProps } from "@/features/editor/state/editorStore";
|
|
import { getSectionLayoutConfig } from "@/features/editor/components/PublicPageRenderer";
|
|
|
|
describe("getSectionLayoutConfig", () => {
|
|
const baseProps: SectionBlockProps = {
|
|
background: "default",
|
|
paddingY: "md",
|
|
columns: [{ id: "sec_col_1", span: 12 }],
|
|
maxWidthMode: "normal",
|
|
gapX: "md",
|
|
alignItems: "top",
|
|
};
|
|
|
|
it("기본 섹션 설정에서 예상 클래스 조합을 반환해야 한다", () => {
|
|
const cfg = getSectionLayoutConfig(baseProps);
|
|
|
|
expect(cfg.backgroundClass).toBe("bg-slate-950");
|
|
expect(cfg.paddingYClass).toBe("py-6");
|
|
expect(cfg.maxWidthClass).toBe("max-w-5xl");
|
|
expect(cfg.gapXClass).toBe("gap-8");
|
|
expect(cfg.alignItemsClass).toBe("items-start");
|
|
});
|
|
|
|
it("maxWidthMode/gapX/alignItems 토큰에 따라 클래스를 변경해야 한다", () => {
|
|
const wideCentered: SectionBlockProps = {
|
|
...baseProps,
|
|
maxWidthMode: "wide",
|
|
gapX: "lg",
|
|
alignItems: "center",
|
|
};
|
|
|
|
const narrowBottomMuted: SectionBlockProps = {
|
|
...baseProps,
|
|
background: "muted",
|
|
maxWidthMode: "narrow",
|
|
gapX: "sm",
|
|
alignItems: "bottom",
|
|
paddingY: "sm",
|
|
};
|
|
|
|
const wideCfg = getSectionLayoutConfig(wideCentered);
|
|
expect(wideCfg.maxWidthClass).toBe("max-w-6xl");
|
|
expect(wideCfg.gapXClass).toBe("gap-10");
|
|
expect(wideCfg.alignItemsClass).toBe("items-center");
|
|
|
|
const narrowCfg = getSectionLayoutConfig(narrowBottomMuted);
|
|
expect(narrowCfg.backgroundClass).toBe("bg-slate-900");
|
|
expect(narrowCfg.maxWidthClass).toBe("max-w-3xl");
|
|
expect(narrowCfg.gapXClass).toBe("gap-4");
|
|
expect(narrowCfg.alignItemsClass).toBe("items-end");
|
|
expect(narrowCfg.paddingYClass).toBe("py-4");
|
|
});
|
|
|
|
it("primary 배경과 큰 패딩에 대해 올바른 클래스를 반환해야 한다", () => {
|
|
const primaryLarge: SectionBlockProps = {
|
|
...baseProps,
|
|
background: "primary",
|
|
paddingY: "lg",
|
|
};
|
|
|
|
const cfg = getSectionLayoutConfig(primaryLarge);
|
|
expect(cfg.backgroundClass).toBe("bg-sky-900");
|
|
expect(cfg.paddingYClass).toBe("py-10");
|
|
});
|
|
});
|