mirror of
https://github.com/badlogic/pi-mono.git
synced 2026-08-20 06:03:50 +00:00
43 lines
1.5 KiB
TypeScript
43 lines
1.5 KiB
TypeScript
import { setKeybindings } from "@earendil-works/pi-tui";
|
|
import { beforeAll, describe, expect, it, vi } from "vitest";
|
|
import { KeybindingsManager } from "../src/core/keybindings.ts";
|
|
import {
|
|
type SettingsCallbacks,
|
|
type SettingsConfig,
|
|
SettingsSelectorComponent,
|
|
} from "../src/modes/interactive/components/settings-selector.ts";
|
|
import { initTheme } from "../src/modes/interactive/theme/theme.ts";
|
|
|
|
describe("SettingsSelectorComponent", () => {
|
|
beforeAll(() => {
|
|
initTheme("dark");
|
|
setKeybindings(new KeybindingsManager());
|
|
});
|
|
|
|
it("cycles through fullscreen settings", () => {
|
|
const onExitOutputChange = vi.fn();
|
|
const onScrollbarChange = vi.fn();
|
|
const config = {
|
|
fullscreenExitOutput: "transcript",
|
|
fullscreenScrollbar: "auto",
|
|
warnings: {},
|
|
availableThinkingLevels: [],
|
|
availableThemes: [],
|
|
} as unknown as SettingsConfig;
|
|
const callbacks = {
|
|
onFullscreenExitOutputChange: onExitOutputChange,
|
|
onFullscreenScrollbarChange: onScrollbarChange,
|
|
} as unknown as SettingsCallbacks;
|
|
|
|
const cycle = (label: string, count: number) => {
|
|
const list = new SettingsSelectorComponent(config, callbacks).getSettingsList();
|
|
for (const character of label) list.handleInput(character);
|
|
for (let i = 0; i < count; i++) list.handleInput("\r");
|
|
};
|
|
|
|
cycle("Fullscreen exit output", 2);
|
|
expect(onExitOutputChange.mock.calls.flat()).toEqual(["resume-hint", "transcript"]);
|
|
cycle("Fullscreen scrollbar", 3);
|
|
expect(onScrollbarChange.mock.calls.flat()).toEqual(["always", "hidden", "auto"]);
|
|
});
|
|
});
|