import { beforeEach, describe, expect, test } from "bun:test";
import {
addToMessageQueue,
clearPendingMessages,
isQueueBridgeConnected,
type QueuedMessage,
setMessageQueueAdder,
} from "../../cli/helpers/messageQueueBridge";
import {
formatTaskNotification,
formatTaskNotifications,
type TaskNotification,
} from "../../cli/helpers/taskNotifications";
describe("taskNotifications", () => {
describe("formatTaskNotification", () => {
test("formats single notification correctly", () => {
const notification: TaskNotification = {
taskId: "task_1",
status: "completed",
summary: 'Agent "Find files" completed',
result: "Found 5 files in src/",
outputFile: "/tmp/task_1.log",
};
const formatted = formatTaskNotification(notification);
expect(formatted).toContain("");
expect(formatted).toContain("task_1");
expect(formatted).toContain("completed");
expect(formatted).toContain(
'Agent "Find files" completed',
);
expect(formatted).toContain("Found 5 files in src/");
expect(formatted).toContain("");
expect(formatted).toContain(
"Full transcript available at: /tmp/task_1.log",
);
});
test("escapes XML special characters in summary", () => {
const notification: TaskNotification = {
taskId: "task_1",
status: "completed",
summary: 'Agent completed',
result: "Normal result",
outputFile: "/tmp/task_1.log",
};
const formatted = formatTaskNotification(notification);
// Quotes don't need escaping in XML text content, only in attributes
expect(formatted).toContain('<script>alert("xss")</script>');
expect(formatted).not.toContain("