Files
cc-switch/tests/components/usageProviderLabel.test.ts
Jason 6fabe63abb fix(agy): show Antigravity session-log rows as "Session log"
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.
2026-10-21 17:04:27 +08:00

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");
});
});