test(backend): pin schema-linking structured response passthrough
This commit is contained in:
@@ -0,0 +1,35 @@
|
|||||||
|
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();
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user