import { expect, it } from "vitest"; import { groupByDir } from "../src/lib/group"; import type { Book } from "../src/api/types"; let seq = 1; const mk = (path: string): Book => ({ id: seq++, library_id: 1, path, title: path, format: "cbz", size: 1, mtime: 1, pages: 0, state: "ready", error: "", added_at: "", percent: 0, cover_url: "/api/books/0/cover", }); it("根目录组为空串且排最前;目录组按字典序;组内保持输入顺序", () => { const gs = groupByDir([mk("b.cbz"), mk("z/1.cbz"), mk("a/2.cbz"), mk("a/sub/3.cbz")]); expect(gs.map((g) => g.dir)).toEqual(["", "a", "a/sub", "z"]); expect(gs[0].books.map((x) => x.path)).toEqual(["b.cbz"]); expect(gs[1].books.map((x) => x.path)).toEqual(["a/2.cbz"]); }); it("空输入出空数组", () => { expect(groupByDir([])).toEqual([]); });