mirror of
https://github.com/Tencent/BrowserSkill.git
synced 2026-09-10 13:01:23 +08:00
37 lines
1.4 KiB
TypeScript
37 lines
1.4 KiB
TypeScript
import { describe, expect, it, vi } from "vitest";
|
|
import { sendInterrupt } from "@/lib/overlay-interrupt-client";
|
|
|
|
describe("sendInterrupt", () => {
|
|
it("sends OVERLAY_MSG_INTERRUPT with the session id and resolves to the reply", async () => {
|
|
const sendMessage = vi.fn().mockResolvedValue({ ok: true });
|
|
const result = await sendInterrupt(sendMessage, "sess-9");
|
|
expect(sendMessage).toHaveBeenCalledWith({
|
|
kind: "overlay.interrupt",
|
|
sessionId: "sess-9",
|
|
});
|
|
expect(result).toEqual({ ok: true });
|
|
});
|
|
|
|
it("treats an absent reply as failure", async () => {
|
|
const sendMessage = vi.fn().mockResolvedValue(undefined);
|
|
const result = await sendInterrupt(sendMessage, "sess-1");
|
|
expect(result).toEqual({ ok: false });
|
|
});
|
|
|
|
it("treats a thrown sendMessage as failure", async () => {
|
|
const sendMessage = vi.fn().mockRejectedValue(new Error("boom"));
|
|
const result = await sendInterrupt(sendMessage, "sess-1");
|
|
expect(result).toEqual({ ok: false });
|
|
});
|
|
|
|
it("resolves to ok=false if the round trip exceeds the timeout", async () => {
|
|
vi.useFakeTimers();
|
|
const sendMessage = vi.fn(() => new Promise(() => {})); // never resolves
|
|
const promise = sendInterrupt(sendMessage, "sess-t", { timeoutMs: 2000 });
|
|
vi.advanceTimersByTime(2000);
|
|
const result = await promise;
|
|
expect(result).toEqual({ ok: false });
|
|
vi.useRealTimers();
|
|
});
|
|
});
|