Files
dev/third_party/pi/packages/coding-agent/test/suite/regressions/7731-tui-method-wrapping.test.ts
alexion 4def357d09 chore(vendor): import pi 0.85.1
Imported as a linear vendor commit so forge rebases do not replay the upstream root tree.

git-subtree-dir: third_party/pi

git-subtree-split: d981de1229ef899957bbe968bc8dcda02a21f477
2026-09-14 10:48:47 -04:00

32 lines
1.1 KiB
TypeScript

import type { TUI } from "@earendil-works/pi-tui";
import { describe, expect, it, vi } from "vitest";
import { createInteractiveTuiReference } from "../../../src/modes/interactive/interactive-mode.ts";
describe("TUI method wrapping", () => {
it("calls the method captured before a replacement", () => {
const renderer = {
render: (width: number) => [`width: ${width}`],
} as unknown as TUI;
const tui = createInteractiveTuiReference(() => renderer);
const originalRender = tui.render;
tui.render = (width: number) => originalRender(width);
expect(tui.render(80)).toEqual(["width: 80"]);
});
it("routes a captured method to a replacement renderer", () => {
const regularRequestRender = vi.fn();
const fullscreenRequestRender = vi.fn();
let renderer = { requestRender: regularRequestRender } as unknown as TUI;
const tui = createInteractiveTuiReference(() => renderer);
const requestRender = tui.requestRender;
requestRender();
renderer = { requestRender: fullscreenRequestRender } as unknown as TUI;
requestRender();
expect(regularRequestRender).toHaveBeenCalledOnce();
expect(fullscreenRequestRender).toHaveBeenCalledOnce();
});
});