46
apps/web/src/lib/teacher/extract-text.test.ts
Normal file
46
apps/web/src/lib/teacher/extract-text.test.ts
Normal file
@@ -0,0 +1,46 @@
|
||||
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);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user