| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- import { describe, expect, test } from "bun:test";
- import {
- createUserMessage,
- createAssistantMessage,
- normalizeMessages,
- extractTag,
- } from "../../src/utils/messages";
- // ─── Message Structure ────────────────────────────────────────────────
- describe("Message pipeline: message structure", () => {
- test("createUserMessage returns a Message with type 'user'", () => {
- const msg = createUserMessage("hello");
- expect(msg.type).toBe("user");
- expect(msg.message.role).toBe("user");
- expect(msg.uuid).toBeTruthy();
- expect(msg.timestamp).toBeTruthy();
- });
- test("createAssistantMessage returns a Message with type 'assistant'", () => {
- const msg = createAssistantMessage("response");
- expect(msg.type).toBe("assistant");
- expect(msg.message.role).toBe("assistant");
- expect(msg.uuid).toBeTruthy();
- });
- test("user and assistant messages have different UUIDs", () => {
- const user = createUserMessage("hello");
- const assistant = createAssistantMessage("response");
- expect(user.uuid).not.toBe(assistant.uuid);
- });
- });
- // ─── Tag Extraction ───────────────────────────────────────────────────
- describe("Message pipeline: tag extraction", () => {
- test("extractTag returns null for non-matching tag", () => {
- expect(extractTag("no tags here", "think")).toBeNull();
- });
- test("extractTag returns null for empty string", () => {
- expect(extractTag("", "think")).toBeNull();
- });
- test("extractTag requires tagName parameter", () => {
- // Calling without tagName throws
- expect(() => (extractTag as any)("hello")).toThrow();
- });
- });
- // ─── Normalization ────────────────────────────────────────────────────
- describe("Message pipeline: normalization", () => {
- test("normalizeMessages returns an array", () => {
- const msg = createUserMessage("hello");
- const result = normalizeMessages([msg]);
- expect(Array.isArray(result)).toBe(true);
- });
- test("normalizeMessages preserves at least one message for simple input", () => {
- const msg = createUserMessage("hello");
- const result = normalizeMessages([msg]);
- expect(result.length).toBeGreaterThanOrEqual(1);
- });
- });
|