41 lines
1.7 KiB
TypeScript
41 lines
1.7 KiB
TypeScript
import { describe, it, expect } from "vitest";
|
|
import { getDashboardMessages } from "@/features/i18n/messages/dashboard";
|
|
import { DEFAULT_LOCALE } from "@/features/i18n/locale";
|
|
|
|
// Dashboard i18n 메시지 딕셔너리 TDD
|
|
// - getDashboardMessages("en") 은 대시보드 타이틀/탭 이름을 영어로 반환해야 한다.
|
|
// - getDashboardMessages("ko") 는 동일 키를 한국어로 반환해야 한다.
|
|
// - 지원하지 않는 로케일이면 DEFAULT_LOCALE(en) 메시지를 반환해야 한다.
|
|
|
|
describe("getDashboardMessages", () => {
|
|
it("en 로케일에서는 대시보드 헤더와 GNB 텍스트를 영어로 반환해야 한다", () => {
|
|
const t = getDashboardMessages("en");
|
|
|
|
expect(t.title).toBe("Dashboard");
|
|
expect(t.navDashboard).toBe("Dashboard");
|
|
expect(t.navProjects).toBe("Projects");
|
|
expect(t.navSubmissions).toBe("All submissions");
|
|
expect(t.summaryTotalProjectsLabel).toBe("Projects");
|
|
expect(t.chartTitle).toBe("Recent submissions (daily)");
|
|
});
|
|
|
|
it("ko 로케일에서는 대시보드 헤더와 GNB 텍스트를 한국어로 반환해야 한다", () => {
|
|
const t = getDashboardMessages("ko");
|
|
|
|
expect(t.title).toBe("대시보드");
|
|
expect(t.navDashboard).toBe("대시보드");
|
|
expect(t.navProjects).toBe("프로젝트 목록");
|
|
expect(t.navSubmissions).toBe("전체 제출 내역");
|
|
expect(t.summaryTotalProjectsLabel).toBe("프로젝트 수");
|
|
expect(t.chartTitle).toBe("최근 제출 추이 (일별)");
|
|
});
|
|
|
|
it("지원하지 않는 로케일이면 DEFAULT_LOCALE(en) 메시지를 반환해야 한다", () => {
|
|
const fallback = getDashboardMessages(DEFAULT_LOCALE);
|
|
const t = getDashboardMessages("fr" as any);
|
|
|
|
expect(t.title).toBe(fallback.title);
|
|
expect(t.navDashboard).toBe(fallback.navDashboard);
|
|
});
|
|
});
|