Files
netfelix-audio-fix/server/services/__tests__/discover.test.ts
T

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([]);
});
});