using System; using MediaBrowser.Controller.BaseItemManager; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Model.Configuration; using Moq; using Xunit; namespace Jellyfin.Controller.Tests { public class BaseItemManagerTests { [Theory] [InlineData(typeof(Book), "LibraryEnabled", true)] [InlineData(typeof(Book), "LibraryDisabled", false)] [InlineData(typeof(MusicArtist), "Enabled", true)] [InlineData(typeof(MusicArtist), "ServerDisabled", false)] public void IsMetadataFetcherEnabled_ChecksOptions_ReturnsExpected(Type itemType, string fetcherName, bool expected) { BaseItem item = (BaseItem)Activator.CreateInstance(itemType)!; var libraryTypeOptions = itemType == typeof(Book) ? new TypeOptions { Type = "Book", MetadataFetchers = new[] { "LibraryEnabled" } } : null; var serverConfiguration = new ServerConfiguration(); foreach (var typeConfig in serverConfiguration.MetadataOptions) { typeConfig.DisabledMetadataFetchers = new[] { "ServerDisabled" }; } var serverConfigurationManager = new Mock(); serverConfigurationManager.Setup(scm => scm.Configuration) .Returns(serverConfiguration); var baseItemManager = new BaseItemManager(serverConfigurationManager.Object); var actual = baseItemManager.IsMetadataFetcherEnabled(item, libraryTypeOptions, fetcherName); Assert.Equal(expected, actual); } [Theory] [InlineData(typeof(Book), "LibraryEnabled", true)] [InlineData(typeof(Book), "LibraryDisabled", false)] [InlineData(typeof(MusicArtist), "Enabled", true)] [InlineData(typeof(MusicArtist), "ServerDisabled", false)] public void IsImageFetcherEnabled_ChecksOptions_ReturnsExpected(Type itemType, string fetcherName, bool expected) { BaseItem item = (BaseItem)Activator.CreateInstance(itemType)!; var libraryTypeOptions = itemType == typeof(Book) ? new TypeOptions { Type = "Book", ImageFetchers = new[] { "LibraryEnabled" } } : null; var serverConfiguration = new ServerConfiguration(); foreach (var typeConfig in serverConfiguration.MetadataOptions) { typeConfig.DisabledImageFetchers = new[] { "ServerDisabled" }; } var serverConfigurationManager = new Mock(); serverConfigurationManager.Setup(scm => scm.Configuration) .Returns(serverConfiguration); var baseItemManager = new BaseItemManager(serverConfigurationManager.Object); var actual = baseItemManager.IsImageFetcherEnabled(item, libraryTypeOptions, fetcherName); Assert.Equal(expected, actual); } } }