Files
CC-Switch/tests/components/SelectItemIndicator.test.ts
T
thisTom 2781d40e82 fix(ui): 修复 Skills 管理与模型配置交互展示问题 (#4323)
* fix(ui): improve skills and provider interactions

* fix(skills): keep repo manager available on skills.sh

* test(skills): cover repo switch after refresh

* fix(skills): keep refresh available for empty repo results

---------

Co-authored-by: thisTom <19346741+thisTom@users.noreply.github.com>
2026-06-23 10:07:14 +08:00

40 lines
1.2 KiB
TypeScript

import fs from "node:fs";
import path from "node:path";
import { describe, expect, it } from "vitest";
const SELECT_TSX = path.resolve(
__dirname,
"..",
"..",
"src",
"components",
"ui",
"select.tsx",
);
const stripComments = (source: string) =>
source.replace(/\/\*[\s\S]*?\*\//g, "").replace(/(^|[^:])\/\/.*$/gm, "$1");
describe("SelectItem indicator structure", () => {
const source = stripComments(fs.readFileSync(SELECT_TSX, "utf8"));
it("renders an item indicator before item text", () => {
const indicatorIndex = source.indexOf("SelectPrimitive.ItemIndicator");
const itemTextIndex = source.indexOf("SelectPrimitive.ItemText");
expect(indicatorIndex).toBeGreaterThan(-1);
expect(itemTextIndex).toBeGreaterThan(-1);
expect(indicatorIndex).toBeLessThan(itemTextIndex);
});
it("wraps the indicator in the first direct span", () => {
const itemTextIndex = source.indexOf("SelectPrimitive.ItemText");
const beforeItemText = source.slice(0, itemTextIndex);
const lastSpanOpen = beforeItemText.lastIndexOf("<span");
const lastIndicator = beforeItemText.lastIndexOf("ItemIndicator");
expect(lastSpanOpen).toBeGreaterThan(-1);
expect(lastSpanOpen).toBeLessThan(lastIndicator);
});
});