Squashed 'third_party/pi/' content from commit d981de122
git-subtree-dir: third_party/pi git-subtree-split: d981de1229ef899957bbe968bc8dcda02a21f477
This commit is contained in:
55
packages/coding-agent/test/thinking-selector.test.ts
Normal file
55
packages/coding-agent/test/thinking-selector.test.ts
Normal file
@@ -0,0 +1,55 @@
|
||||
import { setKeybindings } from "@earendil-works/pi-tui";
|
||||
import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import { KeybindingsManager } from "../src/core/keybindings.ts";
|
||||
import { ThinkingSelectorComponent } from "../src/modes/interactive/components/thinking-selector.ts";
|
||||
import { initTheme } from "../src/modes/interactive/theme/theme.ts";
|
||||
import { stripAnsi } from "../src/utils/ansi.ts";
|
||||
|
||||
describe("thinking selector", () => {
|
||||
beforeAll(() => {
|
||||
initTheme("dark");
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
setKeybindings(new KeybindingsManager());
|
||||
});
|
||||
|
||||
it("keeps the current thinking level marked while browsing", () => {
|
||||
const selector = new ThinkingSelectorComponent(
|
||||
"medium",
|
||||
["medium", "high"],
|
||||
() => {},
|
||||
() => {},
|
||||
);
|
||||
const getLevelRow = (level: string): string | undefined =>
|
||||
selector
|
||||
.getSelectList()
|
||||
.render(80)
|
||||
.map((line) => stripAnsi(line))
|
||||
.find((line) => line.includes(level));
|
||||
|
||||
expect(selector.getSelectList().getSelectedItem()?.label).toBe("✓ medium");
|
||||
expect(getLevelRow("medium")?.startsWith("→ ✓ medium")).toBe(true);
|
||||
selector.handleInput("\x1b[B");
|
||||
expect(getLevelRow("medium")?.startsWith(" ✓ medium")).toBe(true);
|
||||
expect(getLevelRow("high")?.startsWith("→ high")).toBe(true);
|
||||
});
|
||||
|
||||
it("uses the configured save binding", () => {
|
||||
setKeybindings(new KeybindingsManager({ "app.thinking.save": "ctrl+r" }));
|
||||
const saveDefault = vi.fn();
|
||||
const selector = new ThinkingSelectorComponent(
|
||||
"medium",
|
||||
["medium", "high"],
|
||||
() => {},
|
||||
() => {},
|
||||
saveDefault,
|
||||
);
|
||||
|
||||
expect(stripAnsi(selector.render(80).join("\n"))).toContain("Ctrl+R to set as default");
|
||||
selector.handleInput("\x13");
|
||||
expect(saveDefault).not.toHaveBeenCalled();
|
||||
selector.handleInput("\x12");
|
||||
expect(saveDefault).toHaveBeenCalledWith("medium");
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user