78 lines
2.9 KiB
TypeScript
78 lines
2.9 KiB
TypeScript
import test from "node:test";
|
|
import assert from "node:assert/strict";
|
|
|
|
const collector = await import("../../open-sse/utils/streamPayloadCollector.ts");
|
|
|
|
test("compactStructuredStreamPayload returns null for null input", () => {
|
|
assert.equal(collector.compactStructuredStreamPayload(null), null);
|
|
});
|
|
|
|
test("compactStructuredStreamPayload returns undefined for undefined input", () => {
|
|
assert.equal(collector.compactStructuredStreamPayload(undefined), undefined);
|
|
});
|
|
|
|
test("compactStructuredStreamPayload passes through primitives", () => {
|
|
assert.equal(collector.compactStructuredStreamPayload(42), 42);
|
|
assert.equal(collector.compactStructuredStreamPayload("str"), "str");
|
|
assert.equal(collector.compactStructuredStreamPayload(true), true);
|
|
});
|
|
|
|
test("compactStructuredStreamPayload compacts objects", () => {
|
|
const input = { a: 1, b: "hello", c: [1, 2, 3] };
|
|
const result = collector.compactStructuredStreamPayload(input);
|
|
assert.ok(typeof result === "object");
|
|
assert.ok(result !== null);
|
|
});
|
|
|
|
test("compactStructuredStreamPayload handles nested objects", () => {
|
|
const input = { outer: { inner: { deep: "value" } } };
|
|
const result = collector.compactStructuredStreamPayload(input);
|
|
assert.ok(typeof result === "object");
|
|
});
|
|
|
|
test("compactStructuredStreamPayload handles arrays", () => {
|
|
const input = [1, 2, { a: 3 }];
|
|
const result = collector.compactStructuredStreamPayload(input);
|
|
assert.ok(Array.isArray(result));
|
|
});
|
|
|
|
test("buildStreamSummaryFromEvents handles empty array", () => {
|
|
const result = collector.buildStreamSummaryFromEvents([]);
|
|
assert.ok(result === null || typeof result === "object");
|
|
});
|
|
|
|
test("buildStreamSummaryFromEvents handles single event", () => {
|
|
const events = [{ data: { choices: [{ delta: { content: "hello" } }] } }];
|
|
const result = collector.buildStreamSummaryFromEvents(events) as any;
|
|
assert.ok(result !== null);
|
|
assert.ok(typeof result === "object");
|
|
});
|
|
|
|
test("buildStreamSummaryFromEvents handles multiple events", () => {
|
|
const events = [
|
|
{ data: { choices: [{ delta: { content: "hello" } }] } },
|
|
{ data: { choices: [{ delta: { content: " world" } }] } },
|
|
];
|
|
const result = collector.buildStreamSummaryFromEvents(events) as any;
|
|
assert.ok(result !== null);
|
|
assert.ok(typeof result === "object");
|
|
});
|
|
|
|
test("createStructuredSSECollector returns collector object", () => {
|
|
const result = collector.createStructuredSSECollector();
|
|
assert.ok(typeof result === "object");
|
|
assert.ok(result !== null);
|
|
});
|
|
|
|
test("createStructuredSSECollector with options", () => {
|
|
const result = collector.createStructuredSSECollector({ maxEvents: 100 });
|
|
assert.ok(typeof result === "object");
|
|
});
|
|
|
|
test("createStructuredSSECollector collector has expected methods", () => {
|
|
const c = collector.createStructuredSSECollector();
|
|
assert.ok(c !== null && typeof c === "object");
|
|
const keys = Object.keys(c);
|
|
assert.ok(keys.length > 0);
|
|
});
|