/** * DTP-08 — folder depth cap. */ import { describe, expect, it } from "@suaveplan/testing/runner"; import type { FolderTemplate } from "../src/index.js"; import { assertFolderDepth, type DriveTemplateError, DTP_CODES, MAX_FOLDER_DEPTH, } from "../src/index.js"; function chain(depth: number): FolderTemplate { let node: FolderTemplate = { name: `level-${depth}`, children: [] }; for (let i = depth - 1; i >= 0; i--) { node = { name: `level-${i}`, children: [node] }; } return node; } describe("DTP-08 — folder depth cap", () => { it("MAX_FOLDER_DEPTH pinned at 32", { timeout: 5000 }, () => { expect(MAX_FOLDER_DEPTH).toBe(32); }); it("depth-32 nested folder accepted", { timeout: 5000 }, () => { const tree = chain(32); expect(() => assertFolderDepth(tree)).not.toThrow(); }); it("depth-33 nested folder rejected", { timeout: 5000 }, () => { const tree = chain(33); try { assertFolderDepth(tree); throw new Error("expected TOO_DEEP"); } catch (err) { expect((err as DriveTemplateError).code).toBe( DTP_CODES.TEMPLATE_TOO_DEEP ); } }); });