Files
adventure/apps/web/src/lib/teacher/extract-text.test.ts
Zaine 2c4c9b0595
Some checks failed
CI / test (push) Has been cancelled
ai fixes
2026-06-26 14:44:54 +01:00

47 lines
1.3 KiB
TypeScript

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);
});
});