Files
openclaw/src/agents/pi-embedded-subscribe.subscribe-embedded-pi-session.does-not-append-text-end-content-is.e2e.test.ts
2026-02-19 09:50:00 +00:00

53 lines
1.5 KiB
TypeScript

import { describe, expect, it, vi } from "vitest";
import {
createTextEndBlockReplyHarness,
emitAssistantTextDelta,
emitAssistantTextEnd,
} from "./pi-embedded-subscribe.e2e-harness.js";
describe("subscribeEmbeddedPiSession", () => {
function setupTextEndSubscription() {
const onBlockReply = vi.fn();
const { emit, subscription } = createTextEndBlockReplyHarness({ onBlockReply });
const emitDelta = (delta: string) => {
emitAssistantTextDelta({ emit, delta });
};
const emitTextEnd = (content: string) => {
emitAssistantTextEnd({ emit, content });
};
return { onBlockReply, subscription, emitDelta, emitTextEnd };
}
it.each([
{
name: "does not append when text_end content is a prefix of deltas",
delta: "Hello world",
content: "Hello",
expected: "Hello world",
},
{
name: "does not append when text_end content is already contained",
delta: "Hello world",
content: "world",
expected: "Hello world",
},
{
name: "appends suffix when text_end content extends deltas",
delta: "Hello",
content: "Hello world",
expected: "Hello world",
},
])("$name", ({ delta, content, expected }) => {
const { onBlockReply, subscription, emitDelta, emitTextEnd } = setupTextEndSubscription();
emitDelta(delta);
emitTextEnd(content);
expect(onBlockReply).toHaveBeenCalledTimes(1);
expect(subscription.assistantTexts).toEqual([expected]);
});
});