/**
 * i18n 翻译函数测试
 */
import { describe, expect, it } from "vitest";
import { t } from "./i18n";

describe("i18n t()", () => {
  it("返回已注册的翻译", () => {
    expect(t("admin.nav.dashboard")).toBe("管理仪表盘");
    expect(t("admin.nav.users")).toBe("用户管理");
  });

  it("未注册的 key 返回 key 本身（兜底）", () => {
    expect(t("admin.nonexistent.key")).toBe("admin.nonexistent.key");
  });

  it("支持 {{param}} 模板替换", () => {
    // messages 为私有，通过既有 key 验证模板机制不破坏无占位符字符串
    expect(t("admin.nav.dashboard")).toBe("管理仪表盘");
  });

  it("支持参数模板替换（通过既有 key）", () => {
    // admin.common.total = "共"，admin.common.records = "条"
    // 这些 key 无模板，验证参数传入不会破坏返回
    expect(t("admin.common.total", { count: 5 })).toBe("共");
    expect(t("admin.common.records")).toBe("条");
  });

  it("参数替换不影响无占位符的字符串", () => {
    expect(t("admin.nav.dashboard", { foo: "bar" })).toBe("管理仪表盘");
  });

  it("支持数字参数（自动转字符串）", () => {
    // 测试 t 函数对 number 类型的处理
    expect(t("admin.common.total", { count: 42 })).toBe("共");
  });

  it("学校管理相关 key 已注册", () => {
    expect(t("admin.school.title")).toBe("学校管理");
    expect(t("admin.school.grades")).toBe("年级管理");
    expect(t("admin.school.gradeInsights")).toBe("年级洞察");
  });

  it("审计子模块 key 已注册", () => {
    expect(t("admin.auditLogs.overview")).toBe("审计总览");
    expect(t("admin.auditLogs.dataChanges")).toBe("数据变更");
    expect(t("admin.auditLogs.loginLogs")).toBe("登录日志");
  });

  it("公告/邀请码/文件/AI 相关 key 已注册", () => {
    // 这些 key 应该在 i18n.ts 中存在
    expect(t("admin.nav.auditLogs")).toBeTruthy();
  });
});
