Files
ThothII/backend/test/schema-linking-passthrough.test.ts

36 lines
1.2 KiB
TypeScript

import { test, expect, vi } from "vitest";
import { SessionBridge } from "../src/bridge/session-bridge.js";
function fakeRpc() {
const sent: any[] = [];
let evcb: any;
return {
rpc: {
send: (c: any) => sent.push(c),
on: (_: any, cb: any) => { evcb = cb; },
request: vi.fn(),
} as any,
sent,
fire: (m: any) => evcb(m),
};
}
test("respond forwards the structured schema-linking tables payload to Pi verbatim", () => {
const { rpc, sent, fire } = fakeRpc();
const b = new SessionBridge(rpc);
// Pi emits the ui request with its own RPC id ("pi-123"); the descriptor in the title
// carries the gate's own id ("u7"), matching the structured response below.
fire({ type: "extension_ui_request", id: "pi-123", method: "input", title: JSON.stringify({ id: "u7", widget: "schema-linking" }) });
const resp = { id: "u7", kind: "schema-linking", tables: [{ id: "t1", enacted: true, columns: ["cod_paz"] }] };
b.respond(resp);
// Correlates on Pi's own id, and JSON.stringifies the whole structured object untouched.
expect(sent.at(-1)).toEqual({
type: "extension_ui_response",
id: "pi-123",
value: JSON.stringify(resp),
});
expect(b.pendingWidget()).toBeNull();
});