mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-22 03:51:18 +00:00
test: guard realtime talk mock events
This commit is contained in:
parent
ddf83d16f7
commit
5f2bd36180
2 changed files with 33 additions and 6 deletions
|
|
@ -171,6 +171,18 @@ function latestWebSocket(): MockGoogleLiveWebSocket {
|
|||
return ws;
|
||||
}
|
||||
|
||||
function requireFirstTalkEvent(onTalkEvent: ReturnType<typeof vi.fn>): Record<string, unknown> {
|
||||
const [call] = onTalkEvent.mock.calls;
|
||||
if (!call) {
|
||||
throw new Error("expected talk event");
|
||||
}
|
||||
const [event] = call;
|
||||
if (!event || typeof event !== "object" || Array.isArray(event)) {
|
||||
throw new Error("expected talk event record");
|
||||
}
|
||||
return event as Record<string, unknown>;
|
||||
}
|
||||
|
||||
describe("GoogleLiveRealtimeTalkTransport", () => {
|
||||
beforeEach(() => {
|
||||
wsInstances.length = 0;
|
||||
|
|
@ -201,10 +213,10 @@ describe("GoogleLiveRealtimeTalkTransport", () => {
|
|||
|
||||
expect(ws.binaryType).toBe("arraybuffer");
|
||||
await vi.waitFor(() => expect(onStatus).toHaveBeenCalledWith("listening"));
|
||||
const readyEvent = onTalkEvent.mock.calls[0]?.[0];
|
||||
expect(readyEvent?.type).toBe("session.ready");
|
||||
expect(readyEvent?.sessionId).toBe("main:google:provider-websocket");
|
||||
expect(readyEvent?.transport).toBe("provider-websocket");
|
||||
const readyEvent = requireFirstTalkEvent(onTalkEvent);
|
||||
expect(readyEvent.type).toBe("session.ready");
|
||||
expect(readyEvent.sessionId).toBe("main:google:provider-websocket");
|
||||
expect(readyEvent.transport).toBe("provider-websocket");
|
||||
});
|
||||
|
||||
it("decodes Blob setup messages", async () => {
|
||||
|
|
|
|||
|
|
@ -46,6 +46,21 @@ class FakePeerConnection extends EventTarget {
|
|||
}
|
||||
}
|
||||
|
||||
function requireTalkEvent(
|
||||
onTalkEvent: ReturnType<typeof vi.fn>,
|
||||
index: number,
|
||||
): Record<string, unknown> {
|
||||
const call = onTalkEvent.mock.calls[index];
|
||||
if (!call) {
|
||||
throw new Error(`expected talk event at index ${index}`);
|
||||
}
|
||||
const [event] = call;
|
||||
if (!event || typeof event !== "object" || Array.isArray(event)) {
|
||||
throw new Error(`expected talk event record at index ${index}`);
|
||||
}
|
||||
return event as Record<string, unknown>;
|
||||
}
|
||||
|
||||
describe("WebRtcSdpRealtimeTalkTransport", () => {
|
||||
afterEach(() => {
|
||||
vi.unstubAllGlobals();
|
||||
|
|
@ -237,12 +252,12 @@ describe("WebRtcSdpRealtimeTalkTransport", () => {
|
|||
"output.text.done",
|
||||
]);
|
||||
expect(onTalkEvent.mock.calls.map(([event]) => event.turnId)).toEqual(["turn-1", "turn-1"]);
|
||||
const userTranscriptEvent = onTalkEvent.mock.calls[0]?.[0];
|
||||
const userTranscriptEvent = requireTalkEvent(onTalkEvent, 0);
|
||||
expect(userTranscriptEvent.itemId).toBe("input-1");
|
||||
expect(userTranscriptEvent.payload).toEqual({ role: "user", text: "hello" });
|
||||
expect(userTranscriptEvent.sessionId).toBe("main:openai:webrtc");
|
||||
expect(userTranscriptEvent.transport).toBe("webrtc");
|
||||
const assistantTranscriptEvent = onTalkEvent.mock.calls[1]?.[0];
|
||||
const assistantTranscriptEvent = requireTalkEvent(onTalkEvent, 1);
|
||||
expect(assistantTranscriptEvent.itemId).toBe("response-1");
|
||||
expect(assistantTranscriptEvent.payload).toEqual({ text: "hi there" });
|
||||
expect(assistantTranscriptEvent.sessionId).toBe("main:openai:webrtc");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue