From a64a98be2396eaef8d7e55374621be29c57e4af2 Mon Sep 17 00:00:00 2001 From: ShukeBta <272197458+ShukeBta@users.noreply.github.com> Date: Thu, 16 Jul 2026 13:45:12 +0800 Subject: [PATCH] Test legacy ISO scrape recovery --- internal/service/scanner_incremental_test.go | 43 ++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/internal/service/scanner_incremental_test.go b/internal/service/scanner_incremental_test.go index 3b50a89..24502c5 100644 --- a/internal/service/scanner_incremental_test.go +++ b/internal/service/scanner_incremental_test.go @@ -123,6 +123,49 @@ func TestScanLibraryUsesISOParentFolderForScrapeIdentity(t *testing.T) { } } +func TestScanLibraryRepairsPreviouslyUnmatchedGenericISO(t *testing.T) { + sc, repos := newScannerTestEnv(t) + root := t.TempDir() + lib := model.Library{Name: "Movies", Path: root, Type: "movie", Enabled: true} + if err := repos.Library.Create(t.Context(), &lib); err != nil { + t.Fatal(err) + } + movieDir := filepath.Join(root, "Dune.Part.Two.2024") + if err := os.MkdirAll(movieDir, 0o755); err != nil { + t.Fatal(err) + } + isoPath := filepath.Join(movieDir, "BDMV.iso") + if err := os.WriteFile(isoPath, []byte("iso image"), 0o644); err != nil { + t.Fatal(err) + } + legacy := model.Media{ + LibraryID: lib.ID, + Title: "bdmv", + Path: isoPath, + Container: "iso", + SizeBytes: int64(len("iso image")), + ScrapeStatus: "no_match", + } + if err := repos.DB.Create(&legacy).Error; err != nil { + t.Fatal(err) + } + + res, err := sc.ScanLibrary(t.Context(), lib.ID) + if err != nil { + t.Fatal(err) + } + if res.Updated != 1 || res.Skipped != 0 { + t.Fatalf("rescan result = %#v, want legacy ISO refreshed", res) + } + var media model.Media + if err := repos.DB.First(&media, "id = ?", legacy.ID).Error; err != nil { + t.Fatal(err) + } + if media.Title != "dune part two" || media.Year != 2024 || media.ScrapeStatus != "pending" { + t.Fatalf("repaired ISO = title=%q year=%d status=%q", media.Title, media.Year, media.ScrapeStatus) + } +} + func TestScanLibraryReturnsNotFoundForMissingLibrary(t *testing.T) { sc, _ := newScannerTestEnv(t)