using System; using System.Linq; using Moq; using NUnit.Framework; using NzbDrone.Common; using NzbDrone.Common.Model; using NzbDrone.Test.Common; using NzbDrone.Update.Providers; namespace NzbDrone.Update.Test { [TestFixture] public class ProgramFixture : TestBase { private Program _program; [SetUp] public void Setup() { _program = Mocker.Resolve<Program>(); } [Test] public void should_throw_if_null_passed_in() { Assert.Throws<ArgumentException>(() => _program.Start(null)); } [Test] public void should_throw_if_less_than_two_arguments_arent_passed_in() { Assert.Throws<ArgumentException>(() => _program.Start(new[] { "" })); } [Test] public void should_throw_if_more_than_two_arguments_arent_passed_in() { Assert.Throws<ArgumentException>(() => _program.Start(new[] { "", "", "" })); } [TestCase("d", "")] [TestCase("", "")] [TestCase("0", "")] [TestCase("-1", "")] [TestCase(" ", "")] [TestCase(".", "")] public void should_throw_if_first_arg_isnt_an_int(string arg1, string arg2) { Assert.Throws<ArgumentOutOfRangeException>(() => _program.Start(new[] { arg1, arg2 })); } [Test] public void should_call_update_with_corret_path() { const string ProcessPath = @"C:\NzbDrone\nzbdrone.exe"; Mocker.GetMock<ProcessProvider>().Setup(c => c.GetProcessById(12)) .Returns(new ProcessInfo() { StartPath = ProcessPath }); //Act _program.Start(new[] { "12", "" }); //Assert Mocker.GetMock<UpdateProvider>().Verify(c => c.Start(@"C:\NzbDrone"), Times.Once()); } } }