import { describe, expect, it } from "vitest"; import { applyView, sameOrder } from "./playlistView"; import type { Column } from "./tableColumns"; import type { Video } from "./api"; // The playlist's view derivation (E4 S4). What makes it worth a test: the column sort and the // channel grouping compose — groups are ordered by channel name in the SORT's direction, and the // sort then applies within each group. Getting that backwards silently produces a plausible-looking // order, and the whole "save this order" feature writes whatever this function returned. const v = (id: string, title: string, channel: string, secs: number | null = 60): Video => ({ id, title, channel_title: channel, duration_seconds: secs }) as Video; const columns = [ { key: "title", header: "Title", render: () => null, sortable: true, sortValue: (x: Video) => x.title ?? "", }, { key: "channel", header: "Channel", render: () => null, sortable: true, sortValue: (x: Video) => x.channel_title ?? "", }, { key: "duration", header: "Length", render: () => null, sortable: true, sortValue: (x: Video) => x.duration_seconds ?? Number.MAX_SAFE_INTEGER, }, ] as Column