import { describe, it, expect, vi } from "vitest";
import { render, screen, fireEvent } from "@testing-library/react";
import type { SectionBlockProps } from "@/features/editor/state/editorStore";
import { SectionPropertiesPanel } from "@/app/editor/panels/SectionPropertiesPanel";
// 섹션 레이아웃 프리셋/직접 입력이 columns 배열의 span 값을 올바르게 업데이트하는지 검증한다.
describe("SectionPropertiesPanel - layout presets", () => {
const baseProps: SectionBlockProps = {
background: "default",
paddingY: "md",
columns: [{ id: "col-1", span: 12 }],
maxWidthMode: "normal",
gapX: "md",
};
it("2열 1/2-1/2 프리셋 선택 시 columns 가 [6,6] 분할로 업데이트된다", () => {
const updateBlock = vi.fn();
render(
,
);
const select = screen.getByLabelText("섹션 컬럼 레이아웃");
fireEvent.change(select, { target: { value: "two-equal" } });
expect(updateBlock).toHaveBeenCalledWith(
"section-layout-1",
expect.objectContaining({
columns: expect.arrayContaining([
expect.objectContaining({ span: 6 }),
expect.objectContaining({ span: 6 }),
]),
}),
);
});
it("컬럼 span 직접 입력 시 해당 컬럼 span 값이 업데이트된다", () => {
const updateBlock = vi.fn();
render(
,
);
const input = screen.getByLabelText("1열 폭 (1~12)");
fireEvent.change(input, { target: { value: "8" } });
expect(updateBlock).toHaveBeenCalledWith(
"section-layout-2",
expect.objectContaining({
columns: expect.arrayContaining([
expect.objectContaining({ span: 8 }),
]),
}),
);
});
});