import { describe, expect, it } from "vitest"; import { buildFolderTree, flattenVisible } from "./folderTree"; describe("buildFolderTree (Akzeptanzkriterium 1: Ordnerbaum aus den Postfächern des Mandanten)", () => { it("baut flache Ordner als Baumwurzeln ohne Verschachtelung", () => { const tree = buildFolderTree([ { name: "posteingang", messageCount: 3 }, { name: "archiv", messageCount: 1 }, ]); expect(tree.map((n) => n.name)).toEqual(["posteingang", "archiv"]); expect(tree.every((n) => n.children.length === 0)).toBe(true); }); it("gruppiert '/'-getrennte Namen zu einer Hierarchie", () => { const tree = buildFolderTree([ { name: "INBOX/Projekte/Alpha", messageCount: 2 }, { name: "INBOX/Projekte/Beta", messageCount: 5 }, ]); expect(tree).toHaveLength(1); expect(tree[0].name).toBe("INBOX"); expect(tree[0].messageCount).toBeNull(); const projekte = tree[0].children[0]; expect(projekte.name).toBe("INBOX/Projekte"); expect(projekte.children.map((c) => c.name)).toEqual(["INBOX/Projekte/Alpha", "INBOX/Projekte/Beta"]); }); it("flattenVisible zeigt eingeklappte Kinder nicht", () => { const tree = buildFolderTree([{ name: "INBOX/Projekte", messageCount: 1 }]); expect(flattenVisible(tree, new Set())).toHaveLength(1); expect(flattenVisible(tree, new Set(["INBOX"]))).toHaveLength(2); }); });