repositories / pi-ext
pi-ext
bugabingas pi extensions
owned by admin
extensions/continuity/__tests__/harness.test.ts
Rawimport path from "node:path";
import { afterEach, describe, expect, it, vi } from "vitest";
import { createTestSession, type TestSession } from "../../../test/harness";
describe("continuity pi-test-harness", () => {
let t: TestSession | undefined;
afterEach(() => {
t?.dispose();
t = undefined;
});
it("loads through the real Pi extension runtime", async () => {
const extensionPath = path.resolve(import.meta.dirname, "../index.ts");
t = await createTestSession({ extensions: [extensionPath] });
expect(t.session.extensionRunner.extensions).toHaveLength(1);
expect(t.session.extensionRunner.extensions[0].path).toBe(extensionPath);
});
it("dispatches a hidden follow-up through the real Pi binding", async () => {
const extensionPath = path.resolve(import.meta.dirname, "../index.ts");
t = await createTestSession({ extensions: [extensionPath] });
const send = vi
.spyOn(t.session, "sendCustomMessage")
.mockResolvedValue(undefined);
await t.session.extensionRunner.emit({
type: "session_compact",
compactionEntry: { id: "compact-real" },
fromExtension: false,
reason: "manual",
willRetry: false,
});
await new Promise((resolve) => setTimeout(resolve, 10));
expect(send).toHaveBeenCalledOnce();
expect(send).toHaveBeenCalledWith(
expect.objectContaining({
customType: "continuity-resume",
display: false,
}),
{ triggerTurn: true, deliverAs: "followUp" },
);
});
});