7cb2714793
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
38 lines
1.5 KiB
TypeScript
38 lines
1.5 KiB
TypeScript
import { describe, it, expect, beforeAll, afterAll } from "bun:test";
|
|
import { mkdirSync, writeFileSync, rmSync } from "node:fs";
|
|
import { discoverVideoFiles } from "../discover";
|
|
|
|
const TMP = "/tmp/discover-test-" + Date.now();
|
|
|
|
beforeAll(() => {
|
|
mkdirSync(`${TMP}/movies/Movie A (2020)`, { recursive: true });
|
|
mkdirSync(`${TMP}/tv/Show B (2019)/Season 01`, { recursive: true });
|
|
writeFileSync(`${TMP}/movies/Movie A (2020)/Movie A (2020).mkv`, "");
|
|
writeFileSync(`${TMP}/movies/Movie A (2020)/Movie A (2020).nfo`, "");
|
|
writeFileSync(`${TMP}/tv/Show B (2019)/Season 01/Show B (2019) - S01E01 - Pilot.mkv`, "");
|
|
writeFileSync(`${TMP}/tv/Show B (2019)/Season 01/Show B (2019) - S01E01 - Pilot.srt`, "");
|
|
});
|
|
|
|
afterAll(() => {
|
|
rmSync(TMP, { recursive: true, force: true });
|
|
});
|
|
|
|
describe("discoverVideoFiles", () => {
|
|
it("finds video files in both roots", async () => {
|
|
const files = await discoverVideoFiles([`${TMP}/movies`, `${TMP}/tv`]);
|
|
expect(files).toHaveLength(2);
|
|
expect(files.some((f) => f.endsWith("Movie A (2020).mkv"))).toBe(true);
|
|
expect(files.some((f) => f.endsWith("Show B (2019) - S01E01 - Pilot.mkv"))).toBe(true);
|
|
});
|
|
|
|
it("ignores non-video files (.nfo, .srt)", async () => {
|
|
const files = await discoverVideoFiles([`${TMP}/movies`, `${TMP}/tv`]);
|
|
expect(files.every((f) => !f.endsWith(".nfo") && !f.endsWith(".srt"))).toBe(true);
|
|
});
|
|
|
|
it("handles missing directory gracefully", async () => {
|
|
const files = await discoverVideoFiles([`${TMP}/does-not-exist`]);
|
|
expect(files).toEqual([]);
|
|
});
|
|
});
|