package service import ( "testing" "github.com/ShukeBta/MediaStationGo/internal/model" ) func TestMediaSeriesKeyCollapsesNestedSpecialFolders(t *testing.T) { main := model.Media{ LibraryID: "lib-tv", Path: `cloud://openlist/动漫/国漫/示例剧/Season 01/示例剧.S01E01.mkv`, SeasonNum: 1, EpisodeNum: 1, } special := model.Media{ LibraryID: "lib-tv", Path: `cloud://openlist/动漫/国漫/示例剧/Extras/Season 01/示例剧.SP01.mkv`, } if got, want := mediaSeriesKey(special), mediaSeriesKey(main); got != want { t.Fatalf("special key=%q, want main key=%q", got, want) } cards := groupMediaSeriesCards([]model.Media{main, special}) if len(cards) != 1 || cards[0].Count != 2 { t.Fatalf("cards=%#v, want one merged series card with two items", cards) } } func TestMediaSeriesKeyCollapsesSpecialTitleSuffix(t *testing.T) { main := model.Media{ LibraryID: "lib-tv", Path: `cloud://openlist/电视剧/欧美剧/Example Show/Season 01/Example.Show.S01E01.mkv`, SeasonNum: 1, EpisodeNum: 1, } special := model.Media{ LibraryID: "lib-tv", Path: `cloud://openlist/电视剧/欧美剧/Example Show Specials/Example.Show.Special.01.mkv`, SeasonNum: 0, EpisodeNum: 1, } chineseSpecial := model.Media{ LibraryID: "lib-tv", Path: `cloud://openlist/动漫/国漫/示例剧 特别篇/示例剧.SP01.mkv`, SeasonNum: 0, EpisodeNum: 1, } chineseMain := model.Media{ LibraryID: "lib-tv", Path: `cloud://openlist/动漫/国漫/示例剧/Season 01/示例剧.S01E01.mkv`, SeasonNum: 1, EpisodeNum: 1, } if got, want := mediaSeriesKey(special), mediaSeriesKey(main); got != want { t.Fatalf("english special key=%q, want main key=%q", got, want) } if got, want := mediaSeriesKey(chineseSpecial), mediaSeriesKey(chineseMain); got != want { t.Fatalf("chinese special key=%q, want main key=%q", got, want) } }