using System; using System.IO; using FluentAssertions; using NUnit.Framework; using NzbDrone.Common; using NzbDrone.Common.EnvironmentInfo; using NzbDrone.Test.Common; using NzbDrone.Update.UpdateEngine; namespace NzbDrone.Update.Test { [TestFixture] public class InstallUpdateServiceFixture : TestBase<InstallUpdateService> { [SetUp] public void Setup() { Mocker.GetMock<IAppDirectoryInfo>() .Setup(c => c.SystemTemp).Returns(@"C:\Temp\"); } [TestCase(null)] [TestCase("")] [TestCase(" ")] public void update_should_throw_target_folder_is_blank(string target) { Assert.Throws<ArgumentException>(() => Subject.Start(target)) .Message.Should().StartWith("Target folder can not be null or empty"); } [Test] public void update_should_throw_if_target_folder_doesnt_exist() { string targetFolder = "c:\\NzbDrone\\"; Assert.Throws<DirectoryNotFoundException>(() => Subject.Start(targetFolder)) .Message.Should().StartWith("Target folder doesn't exist"); } [Test] public void update_should_throw_if_update_folder_doesnt_exist() { const string sandboxFolder = @"C:\Temp\NzbDrone_update\nzbdrone"; const string targetFolder = "c:\\NzbDrone\\"; Mocker.GetMock<IDiskProvider>() .Setup(c => c.FolderExists(targetFolder)) .Returns(true); Mocker.GetMock<IDiskProvider>() .Setup(c => c.FolderExists(sandboxFolder)) .Returns(false); Assert.Throws<DirectoryNotFoundException>(() => Subject.Start(targetFolder)) .Message.Should().StartWith("Update folder doesn't exist"); } } }