Example #1
0
        public void FolderIsDeletedAfterFileIsProcessed()
        {
            var file = "DownloadFolder\\The.Walking.Dead.S05E12.720p.HDTV.x264-KILLERS\\blah.mp4";

            var source = new Mock <IDirectory>();

            source.SetupGet(s => s.Path).Returns("DownloadFolder");
            var destination             = new Mock <IDirectory>();
            var seriesDestinationFolder = new Mock <IDirectory>();
            var sourceEpisodeFolder     = new Mock <IDirectory>();

            sourceEpisodeFolder.Setup(sef => sef.Exists()).Returns(true);

            var episodeFile = new Mock <IFile>();

            episodeFile.Setup(ef => ef.Extension).Returns(".mp4");
            episodeFile.Setup(ef => ef.DirectoryName).Returns("DownloadFolder\\The.Walking.Dead.S05E12.720p.HDTV.x264-KILLERS\\");

            var fileSystemFactory = GetFileSystemFactory(source, destination, seriesDestinationFolder, file, episodeFile);

            fileSystemFactory.Setup(fsf => fsf.GetDirectory("DownloadFolder\\The.Walking.Dead.S05E12.720p.HDTV.x264-KILLERS")).Returns(sourceEpisodeFolder.Object);

            var tvService       = new Mock <ITvService>();
            var analyticService = new Mock <IAnalyticsService>();

            var processor = new EpisodeProcessor(_settings, tvService.Object, fileSystemFactory.Object, analyticService.Object);

            processor.DeleteSourceFile(file);

            sourceEpisodeFolder.Verify(sef => sef.Delete(true), Times.Once);
        }
        public void FolderIsDeletedAfterFileIsProcessed()
        {
            var file = "DownloadFolder\\The.Walking.Dead.S05E12.720p.HDTV.x264-KILLERS\\blah.mp4";

            var source = new Mock<IDirectory>();
            source.SetupGet(s => s.Path).Returns("DownloadFolder");
            var destination = new Mock<IDirectory>();
            var seriesDestinationFolder = new Mock<IDirectory>();
            var sourceEpisodeFolder = new Mock<IDirectory>();
            sourceEpisodeFolder.Setup(sef => sef.Exists()).Returns(true);

            var episodeFile = new Mock<IFile>();
            episodeFile.Setup(ef => ef.Extension).Returns(".mp4");
            episodeFile.Setup(ef => ef.DirectoryName).Returns("DownloadFolder\\The.Walking.Dead.S05E12.720p.HDTV.x264-KILLERS\\");

            var fileSystemFactory = GetFileSystemFactory(source, destination, seriesDestinationFolder, file, episodeFile);
            fileSystemFactory.Setup(fsf => fsf.GetDirectory("DownloadFolder\\The.Walking.Dead.S05E12.720p.HDTV.x264-KILLERS")).Returns(sourceEpisodeFolder.Object);

            var tvService = new Mock<ITvService>();
            var analyticService = new Mock<IAnalyticsService>();

            var processor = new EpisodeProcessor(_settings, tvService.Object, fileSystemFactory.Object, analyticService.Object);
            processor.DeleteSourceFile(file);

            sourceEpisodeFolder.Verify(sef => sef.Delete(true), Times.Once);
        }
Example #3
0
        public void MatchingEpisodesCopiedToDestinationFolder()
        {
            var files = new[]
            {
                "DownloadFolder\\The.Walking.Dead.S05E12.720p.HDTV.x264-KILLERS.mp4"
            };

            var source = new Mock <IDirectory>();

            source.Setup(s => s.EnumerateFiles("*", true)).Returns(files);
            source.SetupGet(s => s.Path).Returns("DownloadFolder");
            var destination = new Mock <IDirectory>();

            destination.SetupGet(s => s.Path).Returns("TvLibFolder");

            var seriesDestinationFolder = new Mock <IDirectory>();

            seriesDestinationFolder.Setup(sdf => sdf.EnumerateFiles(It.IsAny <string>(), It.IsAny <bool>())).Returns(Enumerable.Empty <string>());
            seriesDestinationFolder.Setup(sdf => sdf.Exists()).Returns(true);

            var episodeFile = new Mock <IFile>();

            episodeFile.Setup(ef => ef.Extension).Returns(".mp4");
            episodeFile.Setup(ef => ef.DirectoryName).Returns("DownloadFolder");

            var fileSystemFactory = GetFileSystemFactory(source, destination, seriesDestinationFolder, "DownloadFolder\\The.Walking.Dead.S05E12.720p.HDTV.x264-KILLERS.mp4", episodeFile);

            var episode = new TvEpisode()
            {
                Season = 5, EpisodeNumber = 12, Title = "Some Title", SeriesName = "The Walking Dead"
            };

            var tvService = new Mock <ITvService>();

            tvService.Setup(ts => ts.GetEpisodeBySeriesName(It.IsAny <string>(), It.IsAny <int>(), It.IsAny <int>(), true))
            .Returns(episode);

            var analyticService = new Mock <IAnalyticsService>();

            var processor = new EpisodeProcessor(_settings, tvService.Object, fileSystemFactory.Object, analyticService.Object);

            processor.ProcessDownloadedEpisodes();

            source.Verify(s => s.EnumerateFiles(It.IsAny <string>(), true), Times.AtLeastOnce);
            seriesDestinationFolder.Verify(sdf => sdf.Exists(), Times.Once);

            //Validate Source File was copied
            episodeFile.Verify(ef => ef.Copy(It.IsAny <string>()), Times.Once);

            //Validate Episode was updated in database
            tvService.Verify(c => c.SaveChanges(), Times.Once);

            episodeFile.Verify(ef => ef.Delete(), Times.Once);
        }
Example #4
0
        public void NoEpisodesFoundInDownloadFolder()
        {
            var source      = new Mock <IDirectory>();
            var destination = new Mock <IDirectory>();
            var tvService   = new Mock <ITvService>();

            var fileSystem = new Mock <IFileSystem>();

            fileSystem.Setup(fsf => fsf.GetDirectory("DownloadFolder")).Returns(source.Object);
            fileSystem.Setup(fsf => fsf.GetDirectory("TvLibFolder")).Returns(destination.Object);

            var analyticService = new Mock <IAnalyticsService>();

            var processor = new EpisodeProcessor(_settings, tvService.Object, fileSystem.Object, analyticService.Object);

            processor.ProcessDownloadedEpisodes();

            source.Verify(s => s.EnumerateFiles(It.IsAny <string>(), true), Times.AtLeastOnce);
            tvService.Verify(c => c.SaveChanges(), Times.Never);
        }
 public StorageService(ILogger <StorageService> log, IMessageBroker broker, EpisodeProcessor episodeProcessor)
 {
     _log              = log;
     _broker           = broker;
     _episodeProcessor = episodeProcessor;
 }
        public void MatchingEpisodesCopiedToDestinationFolder()
        {
            var files = new[]
            {
                "DownloadFolder\\The.Walking.Dead.S05E12.720p.HDTV.x264-KILLERS.mp4"
            };

            var source = new Mock<IDirectory>();
            source.Setup(s => s.EnumerateFiles("*", true)).Returns(files);
            source.SetupGet(s => s.Path).Returns("DownloadFolder");
            var destination = new Mock<IDirectory>();
            destination.SetupGet(s => s.Path).Returns("TvLibFolder");

            var seriesDestinationFolder = new Mock<IDirectory>();
            seriesDestinationFolder.Setup(sdf => sdf.EnumerateFiles(It.IsAny<string>(), It.IsAny<bool>())).Returns(Enumerable.Empty<string>());
            seriesDestinationFolder.Setup(sdf => sdf.Exists()).Returns(true);

            var episodeFile = new Mock<IFile>();
            episodeFile.Setup(ef => ef.Extension).Returns(".mp4");
            episodeFile.Setup(ef => ef.DirectoryName).Returns("DownloadFolder");

            var fileSystemFactory = GetFileSystemFactory(source, destination, seriesDestinationFolder, "DownloadFolder\\The.Walking.Dead.S05E12.720p.HDTV.x264-KILLERS.mp4", episodeFile);

            var episode = new TvEpisode() {Season = 5, EpisodeNumber = 12, Title = "Some Title", SeriesName = "The Walking Dead"};

            var tvService = new Mock<ITvService>();
            tvService.Setup(ts => ts.GetEpisodeBySeriesName(It.IsAny<string>(), It.IsAny<int>(), It.IsAny<int>(), true))
                .Returns(episode);

            var analyticService = new Mock<IAnalyticsService>();

            var processor = new EpisodeProcessor(_settings, tvService.Object, fileSystemFactory.Object, analyticService.Object);
            processor.ProcessDownloadedEpisodes();

            source.Verify(s => s.EnumerateFiles(It.IsAny<string>(), true), Times.AtLeastOnce);
            seriesDestinationFolder.Verify(sdf => sdf.Exists(), Times.Once);

            //Validate Source File was copied
            episodeFile.Verify(ef => ef.Copy(It.IsAny<string>()), Times.Once);

            //Validate Episode was updated in database
            tvService.Verify(c => c.SaveChanges(), Times.Once);

            episodeFile.Verify(ef => ef.Delete(), Times.Once);
        }
        public void NoEpisodesFoundInDownloadFolder()
        {
            var source = new Mock<IDirectory>();
            var destination = new Mock<IDirectory>();
            var tvService = new Mock<ITvService>();

            var fileSystem = new Mock<IFileSystem>();
            fileSystem.Setup(fsf => fsf.GetDirectory("DownloadFolder")).Returns(source.Object);
            fileSystem.Setup(fsf => fsf.GetDirectory("TvLibFolder")).Returns(destination.Object);

            var analyticService = new Mock<IAnalyticsService>();

            var processor = new EpisodeProcessor(_settings, tvService.Object, fileSystem.Object, analyticService.Object);
            processor.ProcessDownloadedEpisodes();

            source.Verify(s => s.EnumerateFiles(It.IsAny<string>(), true), Times.AtLeastOnce);
            tvService.Verify(c => c.SaveChanges(), Times.Never);
        }