mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-07-22 21:27:11 +08:00
- 新增共享六语言词典、前端 i18n 运行时与语言设置入口 - 推进连接、驱动、数据网格、查询、AI、Redis、表设计等模块文案本地化 - 补充 raw 边界、SQL/驱动/更新场景测试与 i18n 扫描工具
46 lines
1.4 KiB
TypeScript
46 lines
1.4 KiB
TypeScript
import React from "react";
|
|
import { act, create } from "react-test-renderer";
|
|
import { describe, expect, it, vi } from "vitest";
|
|
import { I18nProvider } from "../i18n/provider";
|
|
import LanguageSettingsPanel from "./LanguageSettingsPanel";
|
|
|
|
vi.mock("../i18n/runtime", () => ({
|
|
syncLanguageRuntime: vi.fn(async () => undefined),
|
|
}));
|
|
|
|
describe("LanguageSettingsPanel", () => {
|
|
it("renders language options and updates preference", async () => {
|
|
const onPreferenceChange = vi.fn();
|
|
let renderer: ReturnType<typeof create>;
|
|
|
|
await act(async () => {
|
|
renderer = create(
|
|
<I18nProvider
|
|
preference="system"
|
|
systemLanguages={["en-US"]}
|
|
onPreferenceChange={onPreferenceChange}
|
|
>
|
|
<LanguageSettingsPanel />
|
|
</I18nProvider>,
|
|
);
|
|
});
|
|
|
|
const text = JSON.stringify(renderer!.toJSON());
|
|
expect(text).toContain("Language");
|
|
expect(text).toContain("Follow system");
|
|
expect(text).toContain("Simplified Chinese");
|
|
expect(text).toContain("繁體中文");
|
|
expect(text).toContain("English");
|
|
expect(text).toContain("日本語");
|
|
expect(text).toContain("Deutsch");
|
|
expect(text).toContain("Русский");
|
|
|
|
const segmented = renderer!.root.findByProps({ "aria-label": "Language" });
|
|
await act(async () => {
|
|
segmented.props.onChange("zh-CN");
|
|
});
|
|
|
|
expect(onPreferenceChange).toHaveBeenCalledWith("zh-CN");
|
|
});
|
|
});
|