mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-26 04:15:48 -06:00
24 lines
992 B
TypeScript
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"),
|
|
);
|
|
}
|