Lidarr/NzbDrone.App.Test/RouterTest.cs

135 lines
5.6 KiB
C#
Raw Normal View History

2013-03-01 00:50:50 +00:00
using System.ServiceProcess;
using FluentAssertions;
using Moq;
using NUnit.Framework;
using NzbDrone.Common;
using NzbDrone.Common.EnvironmentInfo;
2011-11-13 18:16:31 +00:00
using NzbDrone.Test.Common;
namespace NzbDrone.App.Test
{
[TestFixture]
2013-04-16 04:52:41 +00:00
public class RouterTest : TestBase<Router>
{
2013-03-01 00:50:50 +00:00
[TestCase(null, ApplicationModes.Console)]
[TestCase("", ApplicationModes.Console)]
[TestCase("1", ApplicationModes.Help)]
[TestCase("ii", ApplicationModes.Help)]
[TestCase("uu", ApplicationModes.Help)]
[TestCase("i", ApplicationModes.InstallService)]
[TestCase("I", ApplicationModes.InstallService)]
[TestCase("/I", ApplicationModes.InstallService)]
[TestCase("/i", ApplicationModes.InstallService)]
[TestCase("-I", ApplicationModes.InstallService)]
[TestCase("-i", ApplicationModes.InstallService)]
[TestCase("u", ApplicationModes.UninstallService)]
[TestCase("U", ApplicationModes.UninstallService)]
[TestCase("/U", ApplicationModes.UninstallService)]
[TestCase("/u", ApplicationModes.UninstallService)]
[TestCase("-U", ApplicationModes.UninstallService)]
[TestCase("-u", ApplicationModes.UninstallService)]
public void GetApplicationMode_single_arg(string arg, ApplicationModes modes)
{
2013-03-01 00:50:50 +00:00
Router.GetApplicationMode(new[] { arg }).Should().Be(modes);
}
2013-03-01 00:50:50 +00:00
[TestCase("", "", ApplicationModes.Console)]
[TestCase("", null, ApplicationModes.Console)]
[TestCase("i", "n", ApplicationModes.Help)]
public void GetApplicationMode_two_args(string a, string b, ApplicationModes modes)
{
2013-03-01 00:50:50 +00:00
Router.GetApplicationMode(new[] { a, b }).Should().Be(modes);
}
[Test]
public void Route_should_call_install_service_when_application_mode_is_install()
{
2013-05-10 23:53:50 +00:00
var serviceProviderMock = Mocker.GetMock<IServiceProvider>(MockBehavior.Strict);
serviceProviderMock.Setup(c => c.Install(ServiceProvider.NZBDRONE_SERVICE_NAME));
serviceProviderMock.Setup(c => c.ServiceExist(ServiceProvider.NZBDRONE_SERVICE_NAME)).Returns(false);
serviceProviderMock.Setup(c => c.Start(ServiceProvider.NZBDRONE_SERVICE_NAME));
Mocker.GetMock<IRuntimeInfo>().SetupGet(c => c.IsUserInteractive).Returns(true);
2013-04-16 04:52:41 +00:00
Subject.Route(ApplicationModes.InstallService);
serviceProviderMock.Verify(c => c.Install(ServiceProvider.NZBDRONE_SERVICE_NAME), Times.Once());
}
2013-04-16 04:52:41 +00:00
[Test]
public void Route_should_call_uninstall_service_when_application_mode_is_uninstall()
{
2013-05-10 23:53:50 +00:00
var serviceProviderMock = Mocker.GetMock<IServiceProvider>();
serviceProviderMock.Setup(c => c.UnInstall(ServiceProvider.NZBDRONE_SERVICE_NAME));
Mocker.GetMock<IRuntimeInfo>().SetupGet(c => c.IsUserInteractive).Returns(true);
serviceProviderMock.Setup(c => c.ServiceExist(ServiceProvider.NZBDRONE_SERVICE_NAME)).Returns(true);
2013-04-16 04:52:41 +00:00
Subject.Route(ApplicationModes.UninstallService);
serviceProviderMock.Verify(c => c.UnInstall(ServiceProvider.NZBDRONE_SERVICE_NAME), Times.Once());
}
[Test]
public void Route_should_call_console_service_when_application_mode_is_console()
{
Mocker.GetMock<IRuntimeInfo>().SetupGet(c => c.IsUserInteractive).Returns(true);
2013-04-16 04:52:41 +00:00
Mocker.GetMock<IConsoleService>().SetupGet(c => c.IsConsoleApplication).Returns(true);
2013-04-16 04:52:41 +00:00
Subject.Route(ApplicationModes.Console);
2013-04-16 04:52:41 +00:00
Mocker.GetMock<IConsoleService>().Verify(c => c.WaitForClose(), Times.Once());
Mocker.GetMock<INzbDroneServiceFactory>().Verify(c => c.Start(), Times.Once());
}
2013-03-01 00:50:50 +00:00
[TestCase(ApplicationModes.Console)]
[TestCase(ApplicationModes.InstallService)]
[TestCase(ApplicationModes.UninstallService)]
[TestCase(ApplicationModes.Help)]
public void Route_should_call_service_start_when_run_in_service_more(ApplicationModes applicationModes)
{
var envMock = Mocker.GetMock<IRuntimeInfo>();
2013-05-10 23:53:50 +00:00
var serviceProvider = Mocker.GetMock<IServiceProvider>();
envMock.SetupGet(c => c.IsUserInteractive).Returns(false);
serviceProvider.Setup(c => c.Run(It.IsAny<ServiceBase>()));
2013-04-16 04:52:41 +00:00
Subject.Route(applicationModes);
serviceProvider.Verify(c => c.Run(It.IsAny<ServiceBase>()), Times.Once());
}
[Test]
public void show_error_on_install_if_service_already_exist()
{
2013-04-16 04:52:41 +00:00
var consoleMock = Mocker.GetMock<IConsoleService>();
2013-05-10 23:53:50 +00:00
var serviceMock = Mocker.GetMock<IServiceProvider>();
Mocker.GetMock<IRuntimeInfo>().SetupGet(c => c.IsUserInteractive).Returns(true);
consoleMock.Setup(c => c.PrintServiceAlreadyExist());
serviceMock.Setup(c => c.ServiceExist(ServiceProvider.NZBDRONE_SERVICE_NAME)).Returns(true);
2013-04-16 04:52:41 +00:00
Subject.Route(ApplicationModes.InstallService);
2011-12-15 04:15:53 +00:00
Mocker.VerifyAllMocks();
}
[Test]
public void show_error_on_uninstall_if_service_doesnt_exist()
{
2013-04-16 04:52:41 +00:00
var consoleMock = Mocker.GetMock<IConsoleService>();
2013-05-10 23:53:50 +00:00
var serviceMock = Mocker.GetMock<IServiceProvider>();
Mocker.GetMock<IRuntimeInfo>().SetupGet(c => c.IsUserInteractive).Returns(true);
consoleMock.Setup(c => c.PrintServiceDoestExist());
serviceMock.Setup(c => c.ServiceExist(ServiceProvider.NZBDRONE_SERVICE_NAME)).Returns(false);
2013-04-16 04:52:41 +00:00
Subject.Route(ApplicationModes.UninstallService);
2011-12-15 04:15:53 +00:00
Mocker.VerifyAllMocks();
}
}
}