Download src/channels/draft-preview-finalizer.test.ts from SaylorTwift/openclaw: direct link, hf CLI and curl.
- Browser
- Download file 3.3 kB
-
https://huggingface.co/SaylorTwift/openclaw/resolve/main/src/channels/draft-preview-finalizer.test.ts
- Command line
-
hf download hf://SaylorTwift/openclaw/src/channels/draft-preview-finalizer.test.ts
-
curl -L -o draft-preview-finalizer.test.ts https://huggingface.co/SaylorTwift/openclaw/resolve/main/src/channels/draft-preview-finalizer.test.ts
3.3 kB
| // Draft preview finalizer tests cover final draft rendering and cleanup after streamed replies. | |
| import { describe, expect, it, vi } from "vitest"; | |
| import { deliverFinalizableDraftPreview } from "./draft-preview-finalizer.js"; | |
| function createDraft(id: string | undefined = "preview-1") { | |
| return { | |
| flush: vi.fn(async () => {}), | |
| id: vi.fn(() => id), | |
| seal: vi.fn(async () => {}), | |
| discardPending: vi.fn(async () => {}), | |
| clear: vi.fn(async () => {}), | |
| }; | |
| } | |
| describe("deliverFinalizableDraftPreview", () => { | |
| it("does not flush non-finalizable finals before normal delivery", async () => { | |
| const draft = createDraft("preview-1"); | |
| const deliverNormally = vi.fn(async () => {}); | |
| await deliverFinalizableDraftPreview({ | |
| kind: "final", | |
| payload: { text: "image", mediaUrl: "https://example.com/a.png" }, | |
| draft, | |
| buildFinalEdit: () => undefined, | |
| editFinal: vi.fn(async () => {}), | |
| deliverNormally, | |
| }); | |
| expect(draft.flush).not.toHaveBeenCalled(); | |
| expect(draft.discardPending).toHaveBeenCalledTimes(1); | |
| expect(deliverNormally).toHaveBeenCalledTimes(1); | |
| expect(draft.clear).toHaveBeenCalledTimes(1); | |
| }); | |
| it("flushes only eligible finals and edits the preview in place", async () => { | |
| const draft = createDraft("preview-1"); | |
| const editFinal = vi.fn(async () => {}); | |
| const deliverNormally = vi.fn(async () => {}); | |
| const result = await deliverFinalizableDraftPreview({ | |
| kind: "final", | |
| payload: { text: "final" }, | |
| draft, | |
| buildFinalEdit: (payload) => payload.text, | |
| editFinal, | |
| deliverNormally, | |
| }); | |
| expect(result).toBe("preview-finalized"); | |
| expect(draft.flush).toHaveBeenCalledTimes(1); | |
| expect(draft.seal).toHaveBeenCalledTimes(1); | |
| expect(editFinal).toHaveBeenCalledWith("preview-1", "final"); | |
| expect(deliverNormally).not.toHaveBeenCalled(); | |
| expect(draft.clear).not.toHaveBeenCalled(); | |
| }); | |
| it("falls back to normal delivery and clears only after success when edit fails", async () => { | |
| const draft = createDraft("preview-1"); | |
| const editFinal = vi.fn(async () => { | |
| throw new Error("gone"); | |
| }); | |
| const deliverNormally = vi.fn(async () => {}); | |
| await deliverFinalizableDraftPreview({ | |
| kind: "final", | |
| payload: { text: "final" }, | |
| draft, | |
| buildFinalEdit: (payload) => payload.text, | |
| editFinal, | |
| deliverNormally, | |
| logPreviewEditFailure: vi.fn(), | |
| }); | |
| expect(draft.flush).toHaveBeenCalledTimes(1); | |
| expect(draft.discardPending).toHaveBeenCalledTimes(1); | |
| expect(deliverNormally).toHaveBeenCalledTimes(1); | |
| expect(draft.clear).toHaveBeenCalledTimes(1); | |
| }); | |
| it("keeps an existing preview if normal fallback delivery throws", async () => { | |
| const draft = createDraft("preview-1"); | |
| await expect( | |
| deliverFinalizableDraftPreview({ | |
| kind: "final", | |
| payload: { text: "image" }, | |
| draft, | |
| buildFinalEdit: () => undefined, | |
| editFinal: vi.fn(async () => {}), | |
| deliverNormally: vi.fn(async () => { | |
| throw new Error("send failed"); | |
| }), | |
| }), | |
| ).rejects.toThrow("send failed"); | |
| expect(draft.discardPending).toHaveBeenCalledTimes(1); | |
| expect(draft.clear).not.toHaveBeenCalled(); | |
| }); | |
| }); | |