// // Copyright (c) PlaceholderCompany. All rights reserved. // namespace Jellyfin.Controller.Tests { 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; /// /// Tests for . /// public class BaseItemManagerTests { /// /// Tests that IsMetadataFetcherEnabled checks library and server configuration options. /// /// The type of item to test. /// The name of the metadata fetcher. /// The expected result. [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)!; TypeOptions? libraryTypeOptions = itemType == typeof(Book) ? new TypeOptions { Type = "Book", MetadataFetchers = ["LibraryEnabled"], } : null; ServerConfiguration serverConfiguration = new(); foreach (MetadataOptions typeConfig in serverConfiguration.MetadataOptions) { typeConfig.DisabledMetadataFetchers = ["ServerDisabled"]; } Mock serverConfigurationManager = new(); _ = serverConfigurationManager.Setup(scm => scm.Configuration) .Returns(serverConfiguration); BaseItemManager baseItemManager = new(serverConfigurationManager.Object); bool actual = baseItemManager.IsMetadataFetcherEnabled(item, libraryTypeOptions, fetcherName); Assert.Equal(expected, actual); } /// /// Tests that IsImageFetcherEnabled checks library and server configuration options. /// /// The type of item to test. /// The name of the image fetcher. /// The expected result. [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)!; TypeOptions? libraryTypeOptions = itemType == typeof(Book) ? new TypeOptions { Type = "Book", ImageFetchers = ["LibraryEnabled"], } : null; ServerConfiguration serverConfiguration = new(); foreach (MetadataOptions typeConfig in serverConfiguration.MetadataOptions) { typeConfig.DisabledImageFetchers = ["ServerDisabled"]; } Mock serverConfigurationManager = new(); _ = serverConfigurationManager.Setup(scm => scm.Configuration) .Returns(serverConfiguration); BaseItemManager baseItemManager = new(serverConfigurationManager.Object); bool actual = baseItemManager.IsImageFetcherEnabled(item, libraryTypeOptions, fetcherName); Assert.Equal(expected, actual); } } }