diff options
| -rw-r--r-- | MediaBrowser.Model/Entities/ProviderIdsExtensions.cs | 43 | ||||
| -rw-r--r-- | tests/Jellyfin.Model.Tests/Entities/ProviderIdsExtensionsTests.cs | 127 |
2 files changed, 140 insertions, 30 deletions
diff --git a/MediaBrowser.Model/Entities/ProviderIdsExtensions.cs b/MediaBrowser.Model/Entities/ProviderIdsExtensions.cs index c643f1ecd..4aff6e3a4 100644 --- a/MediaBrowser.Model/Entities/ProviderIdsExtensions.cs +++ b/MediaBrowser.Model/Entities/ProviderIdsExtensions.cs @@ -10,28 +10,6 @@ namespace MediaBrowser.Model.Entities public static class ProviderIdsExtensions { /// <summary> - /// Determines whether [has provider identifier] [the specified instance]. - /// </summary> - /// <param name="instance">The instance.</param> - /// <param name="provider">The provider.</param> - /// <returns><c>true</c> if [has provider identifier] [the specified instance]; otherwise, <c>false</c>.</returns> - public static bool HasProviderId(this IHasProviderIds instance, MetadataProvider provider) - { - return !string.IsNullOrEmpty(instance.GetProviderId(provider.ToString())); - } - - /// <summary> - /// Gets a provider id. - /// </summary> - /// <param name="instance">The instance.</param> - /// <param name="provider">The provider.</param> - /// <returns>System.String.</returns> - public static string? GetProviderId(this IHasProviderIds instance, MetadataProvider provider) - { - return instance.GetProviderId(provider.ToString()); - } - - /// <summary> /// Gets a provider id. /// </summary> /// <param name="instance">The instance.</param> @@ -47,7 +25,7 @@ namespace MediaBrowser.Model.Entities if (instance.ProviderIds == null) { - id = string.Empty; + id = null; return false; } @@ -79,6 +57,17 @@ namespace MediaBrowser.Model.Entities } /// <summary> + /// Gets a provider id. + /// </summary> + /// <param name="instance">The instance.</param> + /// <param name="provider">The provider.</param> + /// <returns>System.String.</returns> + public static string? GetProviderId(this IHasProviderIds instance, MetadataProvider provider) + { + return instance.GetProviderId(provider.ToString()); + } + + /// <summary> /// Sets a provider id. /// </summary> /// <param name="instance">The instance.</param> @@ -94,13 +83,7 @@ namespace MediaBrowser.Model.Entities // If it's null remove the key from the dictionary if (string.IsNullOrEmpty(value)) { - if (instance.ProviderIds != null) - { - if (instance.ProviderIds.ContainsKey(name)) - { - instance.ProviderIds.Remove(name); - } - } + instance.ProviderIds?.Remove(name); } else { diff --git a/tests/Jellyfin.Model.Tests/Entities/ProviderIdsExtensionsTests.cs b/tests/Jellyfin.Model.Tests/Entities/ProviderIdsExtensionsTests.cs new file mode 100644 index 000000000..912fe74ec --- /dev/null +++ b/tests/Jellyfin.Model.Tests/Entities/ProviderIdsExtensionsTests.cs @@ -0,0 +1,127 @@ +using System; +using System.Collections.Generic; +using MediaBrowser.Model.Entities; +using Xunit; + +namespace Jellyfin.Model.Tests.Entities +{ + public class ProviderIdsExtensionsTests + { + private const string ExampleImdbId = "tt0113375"; + + [Fact] + public void GetProviderId_NullInstance_ThrowsArgumentNullException() + { + Assert.Throws<ArgumentNullException>(() => ProviderIdsExtensions.GetProviderId(null!, MetadataProvider.Imdb)); + } + + [Fact] + public void GetProviderId_NullName_ThrowsArgumentNullException() + { + Assert.Throws<ArgumentNullException>(() => ProviderIdsExtensionsTestsObject.Empty.GetProviderId(null!)); + } + + [Fact] + public void GetProviderId_NotFoundName_Null() + { + Assert.Null(ProviderIdsExtensionsTestsObject.Empty.GetProviderId(MetadataProvider.Imdb)); + } + + [Fact] + public void GetProviderId_NullProvider_Null() + { + var nullProvider = new ProviderIdsExtensionsTestsObject() + { + ProviderIds = null! + }; + + Assert.Null(nullProvider.GetProviderId(MetadataProvider.Imdb)); + } + + [Fact] + public void TryGetProviderId_NotFoundName_False() + { + Assert.False(ProviderIdsExtensionsTestsObject.Empty.TryGetProviderId(MetadataProvider.Imdb, out _)); + } + + [Fact] + public void TryGetProviderId_NullProvider_False() + { + var nullProvider = new ProviderIdsExtensionsTestsObject() + { + ProviderIds = null! + }; + + Assert.False(nullProvider.TryGetProviderId(MetadataProvider.Imdb, out _)); + } + + [Fact] + public void GetProviderId_FoundName_Id() + { + var provider = new ProviderIdsExtensionsTestsObject(); + provider.ProviderIds[MetadataProvider.Imdb.ToString()] = ExampleImdbId; + + Assert.Equal(ExampleImdbId, provider.GetProviderId(MetadataProvider.Imdb)); + } + + [Fact] + public void TryGetProviderId_FoundName_True() + { + var provider = new ProviderIdsExtensionsTestsObject(); + provider.ProviderIds[MetadataProvider.Imdb.ToString()] = ExampleImdbId; + + Assert.True(provider.TryGetProviderId(MetadataProvider.Imdb, out var id)); + Assert.Equal(ExampleImdbId, id); + } + + [Fact] + public void SetProviderId_NullInstance_ThrowsArgumentNullException() + { + Assert.Throws<ArgumentNullException>(() => ProviderIdsExtensions.SetProviderId(null!, MetadataProvider.Imdb, ExampleImdbId)); + } + + [Fact] + public void SetProviderId_Null_Remove() + { + var provider = new ProviderIdsExtensionsTestsObject(); + provider.SetProviderId(MetadataProvider.Imdb, null!); + Assert.Empty(provider.ProviderIds); + } + + [Fact] + public void SetProviderId_EmptyName_Remove() + { + var provider = new ProviderIdsExtensionsTestsObject(); + provider.ProviderIds[MetadataProvider.Imdb.ToString()] = ExampleImdbId; + provider.SetProviderId(MetadataProvider.Imdb, string.Empty); + Assert.Empty(provider.ProviderIds); + } + + [Fact] + public void SetProviderId_NonEmptyId_Success() + { + var provider = new ProviderIdsExtensionsTestsObject(); + provider.SetProviderId(MetadataProvider.Imdb, ExampleImdbId); + Assert.Single(provider.ProviderIds); + } + + [Fact] + public void SetProviderId_NullProvider_Success() + { + var nullProvider = new ProviderIdsExtensionsTestsObject() + { + ProviderIds = null! + }; + + nullProvider.SetProviderId(MetadataProvider.Imdb, ExampleImdbId); + Assert.Single(nullProvider.ProviderIds); + } + + private class ProviderIdsExtensionsTestsObject : IHasProviderIds + { + public static readonly ProviderIdsExtensionsTestsObject Empty = new ProviderIdsExtensionsTestsObject(); + + public Dictionary<string, string> ProviderIds { get; set; } = new Dictionary<string, string>(); + } + } +} |
