Files
openclaw/extensions/telegram/src/bot-message-dispatch.progress-window.test-helpers.ts

24 lines
992 B
TypeScript

import { expectDefined } from "openclaw/plugin-sdk/expect-runtime";
import { expect } from "vitest";
import { requireInvocationOrder } from "./bot-message-dispatch.test-harness.js";
type OrderedMock = { mock: { invocationCallOrder: number[] } };
/**
* Retirement lands after the final, so shrinking the window above it never
* pushes the final off the anchored viewport. Text windows clear; tool-only
* windows reposition in place — assert the ordering, not the mechanism.
*/
export function expectWindowRetiredAfterFinal(
stream: { clear: OrderedMock; rotateToNewMessageDeferringDelete: OrderedMock },
deliverRepliesMock: OrderedMock,
) {
const retiredAt = [
...stream.clear.mock.invocationCallOrder,
...stream.rotateToNewMessageDeferringDelete.mock.invocationCallOrder,
].toSorted((a, b) => a - b)[0];
expect(expectDefined(retiredAt, "progress window retirement")).toBeGreaterThan(
requireInvocationOrder(deliverRepliesMock, 0, "first reply delivery"),
);
}