using System; using System.IO; using FizzWare.NBuilder; using Moq; using NUnit.Framework; using NzbDrone.Common.Disk; using NzbDrone.Core.Organizer; using NzbDrone.Core.Test.Framework; using NzbDrone.Core.Tv; using NzbDrone.Core.Tv.Commands; using NzbDrone.Test.Common; namespace NzbDrone.Core.Test.TvTests { [TestFixture] public class MoveSeriesServiceFixture : CoreTest { private Series _series; private MoveSeriesCommand _command; [SetUp] public void Setup() { _series = Builder .CreateNew() .Build(); _command = new MoveSeriesCommand { SeriesId = 1, SourcePath = @"C:\Test\TV\Series".AsOsAgnostic(), DestinationPath = @"C:\Test\TV2\Series".AsOsAgnostic() }; Mocker.GetMock() .Setup(s => s.GetSeries(It.IsAny())) .Returns(_series); } private void GivenFailedMove() { Mocker.GetMock() .Setup(s => s.MoveFolder(It.IsAny(), It.IsAny())) .Throws(); } [Test] public void should_log_error_when_move_throws_an_exception() { GivenFailedMove(); Assert.Throws(() => Subject.Execute(_command)); ExceptionVerification.ExpectedErrors(1); } [Test] public void should_no_update_series_path_on_error() { GivenFailedMove(); Assert.Throws(() => Subject.Execute(_command)); ExceptionVerification.ExpectedErrors(1); Mocker.GetMock() .Verify(v => v.UpdateSeries(It.IsAny()), Times.Never()); } [Test] public void should_build_new_path_when_root_folder_is_provided() { _command.DestinationPath = null; _command.DestinationRootFolder = @"C:\Test\TV3".AsOsAgnostic(); var expectedPath = @"C:\Test\TV3\Series".AsOsAgnostic(); Mocker.GetMock() .Setup(s => s.GetSeriesFolder(It.IsAny(), null)) .Returns("Series"); Subject.Execute(_command); Mocker.GetMock() .Verify(v => v.UpdateSeries(It.Is(s => s.Path == expectedPath)), Times.Once()); } [Test] public void should_use_destination_path_if_destination_root_folder_is_blank() { Subject.Execute(_command); Mocker.GetMock() .Verify(v => v.UpdateSeries(It.Is(s => s.Path == _command.DestinationPath)), Times.Once()); Mocker.GetMock() .Verify(v => v.GetSeriesFolder(It.IsAny(), null), Times.Never()); } } }