tv-anarchy/Tests/TVAnarchyCoreTests/LibraryIngestTests.swift
Natalie 4a2ceb9781 feat(offline): inline star-to-keep and trash-to-cull on cache rows
Surface the existing pin (keep-from-cull) and per-file delete actions as
visible inline buttons on each offline cache row instead of context-menu-only:
a star toggles protection from auto-cull (and restore-if-missing), a trash
culls that file early. Aligns wording/icons to the star metaphor.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 00:12:41 -04:00

30 lines
No EOL
1.4 KiB
Swift

import XCTest
@testable import TVAnarchyCore
final class LibraryIngestTests: XCTestCase {
func testMergeIngestUnionsEpisodesByRootDir() {
let existing = [CachedShow(
name: "Broad City", rootDir: "/bigdisk/_/media/tv/Broad City", category: "tv",
episodes: [CachedEpisode(path: "/bigdisk/_/media/tv/Broad City/S05E01.mp4", season: 5, episode: 1, label: "S05E01")]
)]
let incoming = [CachedShow(
name: "Broad City", rootDir: "/bigdisk/_/media/tv/Broad City", category: "tv",
episodes: [CachedEpisode(path: "/bigdisk/_/media/tv/Broad City/S05E02.mp4", season: 5, episode: 2, label: "S05E02")]
)]
let merged = LibraryScanner.mergeIngest(incoming, into: existing)
XCTAssertEqual(merged.count, 1)
XCTAssertEqual(merged[0].episodes.map(\.episode).sorted(), [1, 2])
}
func testScanFromIndexParsesFolderLines() {
let tsv = """
100\t1700000000.0\t/bigdisk/_/media/tv/Broad City/Broad City S05/Broad City S05E01 Stories.mp4
200\t1700000001.0\t/bigdisk/_/media/tv/Broad City/Broad City S05/Broad City S05E02 Foo.mp4
"""
let shows = LibraryScanner.scanFromIndex(tsv)
XCTAssertEqual(shows.count, 1)
XCTAssertEqual(shows[0].name, "Broad City")
XCTAssertEqual(shows[0].category, "tv")
XCTAssertEqual(shows[0].episodes.count, 2)
}
}