59 lines
2.0 KiB
TypeScript
59 lines
2.0 KiB
TypeScript
import { describe, it, expect, beforeAll, afterAll } from "vitest";
|
|||
|
|
import { startTestServer, createBoard, type TestServer } from "./helpers.js";
|
||
|
|
|
||
|
|
let server: TestServer;
|
||
|
|
beforeAll(async () => {
|
||
|
|
server = await startTestServer();
|
||
|
|
});
|
||
|
|
afterAll(async () => {
|
||
|
|
await server.close();
|
||
|
|
});
|
||
|
|
|
||
|
|
describe("REST", () => {
|
||
|
|
it("lista plantillas predefinidas", async () => {
|
||
|
|
const res = await fetch(`${server.url}/api/templates`);
|
||
|
|
const templates = await res.json();
|
||
|
|
expect(Array.isArray(templates)).toBe(true);
|
||
|
|
expect(templates.find((t: any) => t.id === "mad-sad-glad")).toBeTruthy();
|
||
|
|
});
|
||
|
|
|
||
|
|
it("crea un board desde plantilla y devuelve token de moderador", async () => {
|
||
|
|
const board = await createBoard(server.url, { title: "Sprint 1" });
|
||
|
|
expect(board.boardId).toHaveLength(12);
|
||
|
|
expect(board.moderatorToken.length).toBeGreaterThan(10);
|
||
|
|
|
||
|
|
const meta = await (await fetch(`${server.url}/api/boards/${board.boardId}`)).json();
|
||
|
|
expect(meta.title).toBe("Sprint 1");
|
||
|
|
});
|
||
|
|
|
||
|
|
it("crea un board con columnas libres", async () => {
|
||
|
|
const board = await createBoard(server.url, {
|
||
|
|
templateId: undefined,
|
||
|
|
columns: ["Bien", "Mal", "Acciones"],
|
||
|
|
});
|
||
|
|
const md = await (await fetch(`${server.url}/api/boards/${board.boardId}/export`)).text();
|
||
|
|
expect(md).toContain("## Bien");
|
||
|
|
expect(md).toContain("## Mal");
|
||
|
|
});
|
||
|
|
|
||
|
|
it("fija expiresAt cuando se pasa ttlHours", async () => {
|
||
|
|
const board = await createBoard(server.url, { ttlHours: 2 });
|
||
|
|
expect(board.expiresAt).toBeTruthy();
|
||
|
|
expect(new Date(board.expiresAt!).getTime()).toBeGreaterThan(Date.now());
|
||
|
|
});
|
||
|
|
|
||
|
|
it("devuelve 404 para board inexistente", async () => {
|
||
|
|
const res = await fetch(`${server.url}/api/boards/noexiste123`);
|
||
|
|
expect(res.status).toBe(404);
|
||
|
|
});
|
||
|
|
|
||
|
|
it("rechaza plantilla inexistente con 400", async () => {
|
||
|
|
const res = await fetch(`${server.url}/api/boards`, {
|
||
|
|
method: "POST",
|
||
|
|
headers: { "Content-Type": "application/json" },
|
||
|
|
body: JSON.stringify({ templateId: "nope" }),
|
||
|
|
});
|
||
|
|
expect(res.status).toBe(400);
|
||
|
|
});
|
||
|
|
});
|