mirror of
https://github.com/farion1231/cc-switch.git
synced 2026-10-26 01:34:51 +08:00
The frontend map of session placeholder names missed "Antigravity (Session)", so the provider column showed the raw English name and truncated it. Add the entry and a test that every placeholder name in usage_stats.rs is translated.
61 lines
2.1 KiB
TypeScript
61 lines
2.1 KiB
TypeScript
import { readFileSync } from "node:fs";
|
|
import { resolve } from "node:path";
|
|
import { describe, expect, it } from "vitest";
|
|
import type { TFunction } from "i18next";
|
|
import {
|
|
getUsageProviderLabel,
|
|
usageProviderTitle,
|
|
} from "@/components/usage/providerLabel";
|
|
|
|
const t = ((key: string, options?: Record<string, unknown>) =>
|
|
options?.app ? `${key}:${options.app}` : key) as unknown as TFunction;
|
|
|
|
describe("getUsageProviderLabel", () => {
|
|
it("translates session-log placeholder names with the full app name", () => {
|
|
expect(getUsageProviderLabel("Claude (Session)", t)).toEqual({
|
|
label: "usage.sessionProvider.label:Claude Code",
|
|
shortLabel: "usage.sessionProvider.short",
|
|
hint: "usage.sessionProvider.hint",
|
|
});
|
|
expect(getUsageProviderLabel("Gemini (Session)", t).label).toBe(
|
|
"usage.sessionProvider.label:Gemini CLI",
|
|
);
|
|
});
|
|
|
|
it("translates every placeholder name the backend can return", () => {
|
|
// 后端 provider_name_coalesce 里的占位名,新增应用时漏了前端对照表就会原样显示英文全名
|
|
const rust = readFileSync(
|
|
resolve(__dirname, "../../src-tauri/src/services/usage_stats.rs"),
|
|
"utf8",
|
|
);
|
|
const names = [...rust.matchAll(/THEN '([^']+ \(Session\))'/g)].map(
|
|
(m) => m[1],
|
|
);
|
|
expect(names).toContain("Antigravity (Session)");
|
|
for (const name of names) {
|
|
expect(getUsageProviderLabel(name, t).shortLabel).toBe(
|
|
"usage.sessionProvider.short",
|
|
);
|
|
}
|
|
});
|
|
|
|
it("keeps real provider names as-is", () => {
|
|
expect(getUsageProviderLabel("DeepSeek", t)).toEqual({
|
|
label: "DeepSeek",
|
|
shortLabel: "DeepSeek",
|
|
});
|
|
});
|
|
|
|
it("falls back to unknown provider for empty names", () => {
|
|
expect(getUsageProviderLabel("", t).label).toBe("usage.unknownProvider");
|
|
expect(getUsageProviderLabel(undefined, t).label).toBe(
|
|
"usage.unknownProvider",
|
|
);
|
|
});
|
|
|
|
it("appends the hint to the hover title only for placeholders", () => {
|
|
expect(usageProviderTitle({ label: "A", hint: "B" })).toBe("A\nB");
|
|
expect(usageProviderTitle({ label: "A" })).toBe("A");
|
|
});
|
|
});
|