using System; using System.Collections.Generic; using System.IO; using FizzWare.NBuilder; using Moq; using NUnit.Framework; using NzbDrone.Common; using NzbDrone.Core.Configuration; using NzbDrone.Core.MediaFiles; using NzbDrone.Core.MediaFiles.EpisodeImport; using NzbDrone.Core.MediaFiles.Events; using NzbDrone.Core.Parser; using NzbDrone.Core.Tv; using NzbDrone.Core.Test.Framework; namespace NzbDrone.Core.Test.MediaFileTests { [TestFixture] public class DropFolderImportServiceFixture : CoreTest { private EpisodeFile _fakeEpisodeFile; private string[] _subFolders = new[] { "c:\\root\\foldername" }; private string[] _videoFiles = new[] { "c:\\root\\foldername\\video.ext" }; [SetUp] public void Setup() { _fakeEpisodeFile = Builder.CreateNew().Build(); Mocker.GetMock().Setup(c => c.GetVideoFiles(It.IsAny(), It.IsAny())) .Returns(_videoFiles); Mocker.GetMock().Setup(c => c.GetDirectories(It.IsAny())) .Returns(_subFolders); Mocker.GetMock().SetupGet(c => c.DownloadedEpisodesFolder) .Returns("c:\\drop\\"); } [Test] public void should_import_file() { Subject.ProcessDownloadedEpisodesFolder(); VerifyImport(); } [Test] public void should_search_for_series_using_folder_name() { Subject.ProcessDownloadedEpisodesFolder(); Mocker.GetMock().Verify(c => c.GetSeries("foldername"), Times.Once()); } [Test] public void should_skip_if_file_is_in_use_by_another_process() { Mocker.GetMock().Setup(c => c.IsFileLocked(It.IsAny())) .Returns(true); Subject.ProcessDownloadedEpisodesFolder(); VerifyNoImport(); } private void VerifyNoImport() { Mocker.GetMock().Verify(c => c.Import(It.IsAny>(), true), Times.Never()); } private void VerifyImport() { Mocker.GetMock().Verify(c => c.Import(It.IsAny>(), true), Times.Once()); } } }