public void AutoRenameTest() { var fileInfo = new FileInfo( Path.Combine( settings.Object.Value.MediaLibraryPath, "TV Shows", "The Big Bang Theory", "Season 01", "The Big Bang Theory - S10E01 - The Conjugal Conjecture.mp4")); fileInfo.Directory.Create(); File.WriteAllText(fileInfo.FullName, "abcd"); // directory var service = new MediaLibraryService(logger.Object, settings.Object, mover.Object, filebot.Object); var item = new PlainMediaItem(fileInfo.Directory, settings.Object.Value.MediaLibraryPath); Assert.Null(service.AutoRename(item)); mover.Setup(x => x.MoveVideoFile(fileInfo.FullName)).Returns(new List <FileSystemInfo>()); service = new MediaLibraryService(logger.Object, settings.Object, mover.Object, filebot.Object); service.AutoRename(new PlainMediaItem(fileInfo, settings.Object.Value.MediaLibraryPath)); mover.Verify(x => x.MoveVideoFile(It.IsAny <string>()), Times.Once); }
public IEnumerable <PlainMediaItem> AutoRename(PlainMediaItem item) { if (item.FileSystemInfo.IsDirectory()) { logger.LogWarning("cannot autoRename: " + item.Path + " is a directory"); return(null); } return(mover .MoveVideoFile(item.FileSystemInfo.FullName) .Select(fsInfo => new PlainMediaItem(fsInfo, settings.MediaLibraryPath))); }
public PlainMediaItem GetSubtitles(PlainMediaItem item, string lang) { if (item.FileSystemInfo.IsDirectory()) { logger.LogWarning("cannot getSubtitles: " + item.Path + " is a directory"); return(null); } if (!filebot.GetSubtitles(item.FileSystemInfo.FullName, out var srtPath, lang)) { logger.LogWarning("getSubtitles: " + item.Path + " subtitles not found"); return(null); } return(new PlainMediaItem(new FileInfo(srtPath), settings.MediaLibraryPath)); }
public void InvokeTest() { // finish implementation var movedItem = new DownloadItem { MovedFiles = new List <MediaItem> { new MediaItem { Path = "TV Shows/Suits/Season 01/Suits S01E01 Episode Name.mkv" } } }; var path = Path.Combine(options.Object.Value.MediaLibraryPath, "TV Shows", "Game Of Thrones", "Season 01", "Game Of Thrones S01E01 Episode Name.mkv"); TestHelper.CreateFile(path); var pmi = new PlainMediaItem(new FileInfo(path), options.Object.Value.MediaLibraryPath); var missingSubItem = new DownloadItem { MovedFiles = new List <MediaItem> { new MediaItem { Path = pmi.Path } } }; var items = new List <DownloadItem> { movedItem, missingSubItem }; repository.Setup(x => x.FindRecentCompletedItems(It.IsAny <int>())).Returns(items); autoMocker.Use(repository.Object); var job = autoMocker.CreateInstance <GetMissingSubtitlesJob>(); job.Invoke(); var outSrtPath = It.IsAny <string>(); filebot.Verify(x => x.GetSubtitles(It.IsAny <string>(), out outSrtPath, It.IsAny <string>(), false), Times.Exactly(2)); }
public void CtorTest() { var fileInfo = new FileInfo( Path.Combine( settings.Object.Value.MediaLibraryPath, "TV Shows", "The Big Bang Theory", "Season 01", "The Big Bang Theory - S10E01 - The Conjugal Conjecture.mp4")); fileInfo.Directory.Create(); File.WriteAllText(fileInfo.FullName, "abcd"); Assert.Throws <InvalidOperationException>(() => new PlainMediaItem(new DirectoryInfo(settings.Object.Value.MediaLibraryPath), settings.Object.Value.MediaLibraryPath)); var item = new PlainMediaItem(fileInfo, settings.Object.Value.MediaLibraryPath); Assert.NotNull(item); }
public void GetSubtitlesTest() { var fileInfo = new FileInfo( Path.Combine( settings.Object.Value.MediaLibraryPath, "TV Shows", "The Big Bang Theory", "Season 01", "The Big Bang Theory - S10E01 - The Conjugal Conjecture.mp4")); fileInfo.Directory.Create(); File.WriteAllText(fileInfo.FullName, "abcd"); // directory var service = new MediaLibraryService(logger.Object, settings.Object, mover.Object, filebot.Object); var item = new PlainMediaItem(fileInfo.Directory, settings.Object.Value.MediaLibraryPath); Assert.Null(service.GetSubtitles(item, "eng")); // no subtitles found string _; filebot.Setup(x => x.GetSubtitles(It.IsAny <string>(), out _, It.IsAny <string>(), It.IsAny <bool>())).Returns(false); service = new MediaLibraryService(logger.Object, settings.Object, mover.Object, filebot.Object); item = new PlainMediaItem(fileInfo, settings.Object.Value.MediaLibraryPath); Assert.Null(service.GetSubtitles(item, "eng")); // subtitles found var srtPath = Path.Combine( Path.GetDirectoryName(fileInfo.FullName), Path.GetFileNameWithoutExtension(fileInfo.Name) + ".eng.srt"); File.WriteAllText(srtPath, "aaa"); filebot.Setup(x => x.GetSubtitles(It.IsAny <string>(), out srtPath, It.IsAny <string>(), It.IsAny <bool>())).Returns(true); service = new MediaLibraryService(logger.Object, settings.Object, mover.Object, filebot.Object); item = new PlainMediaItem(fileInfo, settings.Object.Value.MediaLibraryPath); var srtItem = service.GetSubtitles(item, "eng"); Assert.AreEqual(3, srtItem.Size); Assert.AreEqual("TV Shows/The Big Bang Theory/Season 01", srtItem.Parent); }
public void DeleteTest() { var fileInfo = new FileInfo( Path.Combine( settings.Object.Value.MediaLibraryPath, "Movies", "movie.mkv")); fileInfo.Directory.Create(); File.WriteAllText(fileInfo.FullName, "abcd"); // ok var item = new PlainMediaItem(fileInfo, settings.Object.Value.MediaLibraryPath); Assert.DoesNotThrow(() => item.Delete()); Assert.False(item.FileSystemInfo.Exists); // renaming root media folder var rootMediaFolder = new PlainMediaItem(new DirectoryInfo(Path.Combine(settings.Object.Value.MediaLibraryPath, "Movies")), settings.Object.Value.MediaLibraryPath); Assert.Throws <InvalidOperationException>(() => rootMediaFolder.Delete()); }