Files
zerobyte/app/server/utils/common-ancestor.test.ts
Nico 332e5bffda refactor: extract restic in core package (#651)
* refactor: extract restic in core package

* chore: add turbo task runner

* refactor: split server utils

* chore: simplify withDeps signature and fix non-null assertion
2026-03-11 21:56:07 +01:00

35 lines
1.1 KiB
TypeScript

import { describe, expect, test } from "bun:test";
import { findCommonAncestor } from "@zerobyte/core/utils";
describe("findCommonAncestor", () => {
test("returns root for empty path lists", () => {
expect(findCommonAncestor([])).toBe("/");
});
test("returns the original path for single-item lists", () => {
expect(findCommonAncestor(["/var/lib/zerobyte/volumes/vol123/_data"])).toBe(
"/var/lib/zerobyte/volumes/vol123/_data",
);
});
test("returns the deepest shared ancestor for multiple absolute paths", () => {
expect(
findCommonAncestor([
"/var/lib/zerobyte/volumes/vol123/_data/Documents/report.pdf",
"/var/lib/zerobyte/volumes/vol123/_data/Photos/summer.jpg",
"/var/lib/zerobyte/volumes/vol123/_data/Music/track.mp3",
]),
).toBe("/var/lib/zerobyte/volumes/vol123/_data");
});
test("returns root when absolute paths only share the filesystem root", () => {
expect(findCommonAncestor(["/etc/hosts", "/usr/local/bin"])).toBe("/");
});
test("throws when any path is relative", () => {
expect(() => findCommonAncestor(["/var/lib/zerobyte", "relative/path"])).toThrow(
'Path "relative/path" is not absolute.',
);
});
});