import { describe, it, expect } from "vitest"; import { extractText, extractStringList, isObjectObject, normalizeQuizAnswer, } from "./extract-text"; describe("extractText", () => { it("returns empty for object without known fields instead of [object Object]", () => { expect(extractText({ foo: "bar" })).toBe(""); expect(extractText({ task: "Research DNS" })).toBe("Research DNS"); }); it("extracts nested assignment objects", () => { expect( extractText({ task: "Write a summary", steps: ["Open docs", "Take notes"], }) ).toContain("Write a summary"); }); }); describe("extractStringList", () => { it("maps object steps to strings", () => { expect( extractStringList([{ step: "Read chapter 1" }, "Search Wikipedia"]) ).toEqual(["Read chapter 1", "Search Wikipedia"]); }); }); describe("normalizeQuizAnswer", () => { it("maps letter B to index 1", () => { const result = normalizeQuizAnswer("B", ["A opt", "B opt", "C opt"]); expect(result.answerIndex).toBe(1); expect(result.answerText).toBe("B opt"); }); }); describe("isObjectObject", () => { it("detects invalid coerced strings", () => { expect(isObjectObject("[object Object]")).toBe(true); expect(isObjectObject("real text")).toBe(false); }); });