Files
jellyfin/tests/Jellyfin.Providers.Tests/ExternalId/AudioDbExternalUrlProviderTests.cs
Marc Brooks aa96ff42e6 Parse provider IDs from season and episode folder/file names
Season and episode directories/files can now include provider ID
attributes in their names (e.g. "Season 01 [tvdbid=22222]" or
"Show S01E01 [tmdbid=99999].mkv"), consistent with the existing
behavior for series folders.

Supported providers: imdbid, tvdbid, tvmazeid, tmdbid.

Adds TmdbSeasonExternalId and TmdbEpisodeExternalId so that
the TMDB season and episode IDs are surfaced in the metadata editor.

Seasons do not have their own IMDb IDs, so we don't support imdbid parsing
in SeasonResolver. Instead, generate IMDb season URLs via
ImdbExternalUrlProvider using the parent series' IMDb ID and the
season number, matching the IMDb URL format:
imdb.com/title/{seriesId}/episodes/?season={N}

Add tests for the ExternalUrlProviders.
2026-03-25 18:47:40 -05:00

90 lines
2.7 KiB
C#

using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Model.Entities;
using MediaBrowser.Providers.Plugins.AudioDb;
using Xunit;
namespace Jellyfin.Providers.Tests.ExternalId
{
public sealed class AudioDbExternalUrlProviderTests
{
private readonly AudioDbAlbumExternalUrlProvider _albumProvider = new();
private readonly AudioDbArtistExternalUrlProvider _artistProvider = new();
[Fact]
public void GetExternalUrls_MusicAlbumWithAudioDbAlbumId_ReturnsCorrectUrl()
{
var album = new MusicAlbum();
album.SetProviderId(MetadataProvider.AudioDbAlbum, "12345");
var urls = _albumProvider.GetExternalUrls(album);
Assert.Contains("https://www.theaudiodb.com/album/12345", urls);
}
[Fact]
public void GetExternalUrls_MusicAlbumWithNoAudioDbAlbumId_ReturnsNoUrl()
{
var album = new MusicAlbum();
var urls = _albumProvider.GetExternalUrls(album);
Assert.Empty(urls);
}
[Fact]
public void GetExternalUrls_NonAlbumWithAudioDbAlbumId_ReturnsNoUrl()
{
var artist = new MusicArtist();
artist.SetProviderId(MetadataProvider.AudioDbAlbum, "12345");
var urls = _albumProvider.GetExternalUrls(artist);
Assert.Empty(urls);
}
[Fact]
public void GetExternalUrls_MusicArtistWithAudioDbArtistId_ReturnsCorrectUrl()
{
var artist = new MusicArtist();
artist.SetProviderId(MetadataProvider.AudioDbArtist, "67890");
var urls = _artistProvider.GetExternalUrls(artist);
Assert.Contains("https://www.theaudiodb.com/artist/67890", urls);
}
[Fact]
public void GetExternalUrls_PersonWithAudioDbArtistId_ReturnsCorrectUrl()
{
var person = new Person();
person.SetProviderId(MetadataProvider.AudioDbArtist, "67890");
var urls = _artistProvider.GetExternalUrls(person);
Assert.Contains("https://www.theaudiodb.com/artist/67890", urls);
}
[Fact]
public void GetExternalUrls_MusicArtistWithNoAudioDbArtistId_ReturnsNoUrl()
{
var artist = new MusicArtist();
var urls = _artistProvider.GetExternalUrls(artist);
Assert.Empty(urls);
}
[Fact]
public void GetExternalUrls_NonArtistWithAudioDbArtistId_ReturnsNoUrl()
{
var album = new MusicAlbum();
album.SetProviderId(MetadataProvider.AudioDbArtist, "67890");
var urls = _artistProvider.GetExternalUrls(album);
Assert.Empty(urls);
}
}
}