import { describe, it, expect } from "vitest"; import { showEpisodeKeys } from "./plexQueue"; import type { PlexCard, PlexSeasonDetail, PlexShowDetail } from "./api"; const ep = (id: string): PlexCard => ({ id }) as PlexCard; const season = (episodes: PlexCard[]): PlexSeasonDetail => ({ episodes }) as unknown as PlexSeasonDetail; const show = (seasons: PlexSeasonDetail[]): PlexShowDetail => ({ seasons }) as unknown as PlexShowDetail; describe("showEpisodeKeys", () => { it("flattens seasons in order, episodes in order, concatenated across seasons", () => { const detail = show([ season([ep("s1e1"), ep("s1e2")]), season([ep("s2e1"), ep("s2e2"), ep("s2e3")]), ]); expect(showEpisodeKeys(detail)).toEqual(["s1e1", "s1e2", "s2e1", "s2e2", "s2e3"]); }); it("returns [] for a show with no seasons", () => { expect(showEpisodeKeys(show([]))).toEqual([]); }); it("returns [] for a season with no episodes (the enabled-but-empty Play-all case)", () => { expect(showEpisodeKeys(show([season([])]))).toEqual([]); }); it("returns [] for null/undefined so an in-flight query's data passes straight through", () => { expect(showEpisodeKeys(null)).toEqual([]); expect(showEpisodeKeys(undefined)).toEqual([]); }); });