package service import ( "os" "path/filepath" "testing" "github.com/truewhile/MeBox/internal/model" ) func TestResolveMediaPeopleUsesSharedStemBesideKeepExtStrm(t *testing.T) { svc := newTestEmbyService(t) dir := t.TempDir() mediaPath := filepath.Join(dir, "竞女01.mkv.strm") nfoPath := filepath.Join(dir, "竞女01.nfo") if err := os.WriteFile(mediaPath, []byte("http://example/play"), 0o644); err != nil { t.Fatal(err) } nfo := ` 竞女01 导演甲 演员乙主角 ` if err := os.WriteFile(nfoPath, []byte(nfo), 0o644); err != nil { t.Fatal(err) } people := svc.resolveMediaPeople(t.Context(), &model.Media{Path: mediaPath, Title: "竞女01"}) if len(people) != 2 { t.Fatalf("people=%d want 2: %#v", len(people), people) } got := map[string]string{} for _, p := range people { got[p["Name"].(string)] = p["Type"].(string) } if got["导演甲"] != "Director" || got["演员乙"] != "Actor" { t.Fatalf("unexpected people: %#v", people) } } func TestResolveMediaPeopleStillReadsLegacyKeepExtNFO(t *testing.T) { svc := newTestEmbyService(t) dir := t.TempDir() mediaPath := filepath.Join(dir, "竞女01.mkv.strm") legacyNFO := filepath.Join(dir, "竞女01.mkv.nfo") if err := os.WriteFile(mediaPath, []byte("http://example/play"), 0o644); err != nil { t.Fatal(err) } if err := os.WriteFile(legacyNFO, []byte(`旧导演`), 0o644); err != nil { t.Fatal(err) } people := svc.resolveMediaPeople(t.Context(), &model.Media{Path: mediaPath}) if len(people) != 1 || people[0]["Name"] != "旧导演" { t.Fatalf("expected legacy keep_ext nfo people, got %#v", people) } }