Files
page-builder/tests/unit/editorMessages.spec.ts
jaybe f71207aeb5
CI / test (push) Failing after 11m12s
CI / e2e (push) Has been cancelled
CI / pr_and_merge (push) Has been cancelled
i18n 적용
2025-12-10 15:56:51 +09:00

40 lines
1.8 KiB
TypeScript

import { describe, it, expect } from "vitest";
import { getEditorMessages } from "@/features/i18n/messages/editor";
import { DEFAULT_LOCALE } from "@/features/i18n/locale";
// Editor i18n 메시지 딕셔너리 TDD
// - en/ko 각각에서 헤더/네비게이션/메뉴 주요 키가 올바른 문자열을 반환하는지 검증한다.
// - 지원하지 않는 로케일은 DEFAULT_LOCALE(en) 으로 폴백한다.
describe("getEditorMessages", () => {
it("en 로케일에서는 에디터 헤더/네비게이션/메뉴 텍스트를 영어로 반환해야 한다", () => {
const t = getEditorMessages("en");
expect(t.headerTitle).toBe("Page Editor");
expect(t.navProjects).toBe("Projects");
expect(t.menuProjectSaveLoad).toBe("Save / load project");
expect(t.jsonModalTitle).toBe("JSON Export / Import");
expect(t.undoLabel).toBe("Undo");
expect(t.listItemToolbarMoveUpLabel).toBe("Move item up");
});
it("ko 로케일에서는 에디터 헤더/네비게이션/메뉴 텍스트를 한국어로 반환해야 한다", () => {
const t = getEditorMessages("ko");
expect(t.headerTitle).toBe("페이지 에디터");
expect(t.navProjects).toBe("프로젝트 목록");
expect(t.menuProjectSaveLoad).toBe("프로젝트 저장/불러오기");
expect(t.jsonEditorStateLabel).toBe("에디터 상태 JSON");
expect(t.undoLabel).toBe("실행 취소");
expect(t.listItemToolbarMoveUpLabel).toBe("아이템 위로 이동");
});
it("지원하지 않는 로케일이면 DEFAULT_LOCALE(en) 메시지를 반환해야 한다", () => {
const fallback = getEditorMessages(DEFAULT_LOCALE);
const t = getEditorMessages("fr" as any);
expect(t.headerTitle).toBe(fallback.headerTitle);
expect(t.navProjects).toBe(fallback.navProjects);
});
});