32 lines
844 B
TypeScript
32 lines
844 B
TypeScript
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([]);
|
|
});
|