Ctrl K
ComunidadGuías…

webui/tests/lib/questions.test.mjs

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
import assert from "node:assert/strict";
import { test } from "node:test";
import { server } from "../helpers/vite.mjs";

test("question frames restore cards and scope answers and errors to their own session", async () => {
  const { applyQuestionFrame } = await server.ssrLoadModule("/src/lib/questions.ts");
  const q = { task_id: "q", question: "Database?", options: [] };
  let items = applyQuestionFrame([], "one", { type: "question_request", session_id: "one", ...q });
  items = applyQuestionFrame(items, "two", { type: "question_request", session_id: "two", ...q });
  items = items.map((item) => ({ ...item, submitting: true }));
  items = applyQuestionFrame(items, "one", {
    type: "error", scope: "input", task_id: "q", message: "try again",
  });
  assert.equal(items[0].submitting, false);
  assert.equal(items[0].error, "try again");
  assert.equal(items[1].submitting, true);
  items = applyQuestionFrame(items, "one", {
    type: "question_closed", task_id: "q",
  });
  assert.equal(items.length, 1);
  assert.equal(items[0].session_id, "two");
  items = applyQuestionFrame(items, "two", { type: "question_closed", task_id: "q" });
  assert.deepEqual(items, []);
  items = applyQuestionFrame(items, "two", {
    type: "ready", questions: [
      { ...q, task_id: "pending" },
    ],
  });
  assert.deepEqual(items.map((item) => item.task_id), ["pending"]);
  assert.equal(items[0].submitting, undefined);
  items = applyQuestionFrame(items, "two", { type: "question_closed", task_id: "pending" });
  assert.deepEqual(items, []);
  items = applyQuestionFrame(items, "two", { type: "ready", questions: [] });
  assert.deepEqual(items, []);
});