섹션 레이아웃 및 템플릿 스타일 개선
CI / test (push) Failing after 6m10s
CI / pr_and_merge (push) Has been skipped

This commit is contained in:
2025-11-21 16:25:55 +09:00
parent 2f59e3781e
commit 546c961a31
25 changed files with 2843 additions and 151 deletions
+66
View File
@@ -0,0 +1,66 @@
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-12");
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-8");
});
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-20");
});
});