Files
NetMesh/electron/bridges/ai/sseDataLine.test.cjs

27 lines
1.2 KiB
JavaScript
Raw Permalink Normal View History

const test = require("node:test");
const assert = require("node:assert/strict");
const { extractSseDataPayload } = require("./sseDataLine.cjs");
test("extractSseDataPayload accepts data: with or without the optional space", () => {
assert.equal(extractSseDataPayload('data: {"a":1}'), '{"a":1}');
assert.equal(extractSseDataPayload('data:{"a":1}'), '{"a":1}');
assert.equal(extractSseDataPayload(' data:{"a":1} \r'), '{"a":1}');
assert.equal(extractSseDataPayload("data: [DONE]"), "[DONE]");
assert.equal(extractSseDataPayload("data:[DONE]"), "[DONE]");
});
test("extractSseDataPayload strips only one leading space after the colon", () => {
assert.equal(extractSseDataPayload("data: keep"), " keep");
assert.equal(extractSseDataPayload("data:"), "");
assert.equal(extractSseDataPayload("data: "), "");
});
test("extractSseDataPayload ignores non-data SSE lines", () => {
assert.equal(extractSseDataPayload(""), null);
assert.equal(extractSseDataPayload(": comment"), null);
assert.equal(extractSseDataPayload("event: message"), null);
assert.equal(extractSseDataPayload("DATA: foo"), null);
assert.equal(extractSseDataPayload(null), null);
assert.equal(extractSseDataPayload(undefined), null);
});