47 lines
1.3 KiB
TypeScript
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);
|
|
});
|
|
});
|