using System; using System.Linq; using System.Threading; using Jellyfin.Data.Entities; using Jellyfin.Data.Enums; using MediaBrowser.Common.Configuration; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Entities; using MediaBrowser.Model.IO; using MediaBrowser.Model.Providers; using MediaBrowser.Providers.Plugins.Tmdb.Movies; using MediaBrowser.XbmcMetadata.Parsers; using Microsoft.Extensions.Logging.Abstractions; using Moq; using Xunit; namespace Jellyfin.XbmcMetadata.Tests.Parsers { public class MovieNfoParserTests { private readonly MovieNfoParser _parser; private readonly IUserDataManager _userDataManager; private readonly User _testUser; private readonly FileSystemMetadata _localImageFileMetadata; public MovieNfoParserTests() { _testUser = new User("Test User", "Auth provider", "Reset provider"); var providerManager = new Mock(); var tmdbExternalId = new TmdbMovieExternalId(); var externalIdInfo = new ExternalIdInfo(tmdbExternalId.ProviderName, tmdbExternalId.Key, tmdbExternalId.Type, tmdbExternalId.UrlFormatString); providerManager.Setup(x => x.GetExternalIdInfos(It.IsAny())) .Returns(new[] { externalIdInfo }); var nfoConfig = new XbmcMetadataOptions() { UserId = "F38E6443-090B-4F7A-BD12-9CFF5020F7BC" }; var configManager = new Mock(); configManager.Setup(x => x.GetConfiguration(It.IsAny())) .Returns(nfoConfig); var user = new Mock(); user.Setup(x => x.GetUserById(It.IsAny())) .Returns(_testUser); var userData = new Mock(); userData.Setup(x => x.GetUserData(_testUser, It.IsAny())) .Returns(new UserItemData()); var directoryService = new Mock(); _localImageFileMetadata = new FileSystemMetadata() { Exists = true, FullName = OperatingSystem.IsWindows() ? "C:\\media\\movies\\Justice League (2017).jpg" : "/media/movies/Justice League (2017).jpg" }; directoryService.Setup(x => x.GetFile(_localImageFileMetadata.FullName)) .Returns(_localImageFileMetadata); _userDataManager = userData.Object; _parser = new MovieNfoParser( new NullLogger(), configManager.Object, providerManager.Object, user.Object, userData.Object, directoryService.Object); } [Fact] public void Fetch_Valid_Success() { var result = new MetadataResult