1
0
mirror of https://github.com/Sonarr/Sonarr.git synced 2024-11-01 00:12:30 +01:00
Sonarr/NzbDrone.Test.Common/TestBase.cs

169 lines
4.4 KiB
C#
Raw Normal View History

2011-12-15 05:15:53 +01:00
using System;
2011-11-13 08:27:16 +01:00
using System.IO;
2013-04-16 06:52:41 +02:00
using FluentAssertions;
2011-11-13 08:27:16 +01:00
using Moq;
using NLog;
2011-11-13 08:27:16 +01:00
using NUnit.Framework;
using NzbDrone.Common;
using NzbDrone.Common.Cache;
using NzbDrone.Common.Messaging;
2013-05-12 17:18:17 +02:00
using NzbDrone.Common.Serializer;
using NzbDrone.Test.Common.AutoMoq;
2011-11-13 08:27:16 +01:00
namespace NzbDrone.Test.Common
{
public abstract class TestBase<TSubject> : TestBase where TSubject : class
{
private TSubject _subject;
[SetUp]
public void CoreTestSetup()
{
_subject = null;
}
protected TSubject Subject
{
get
{
if (_subject == null)
{
_subject = Mocker.Resolve<TSubject>();
}
return _subject;
}
}
2013-04-30 02:04:14 +02:00
}
public abstract class TestBase : LoggingTest
2011-11-13 08:27:16 +01:00
{
2011-12-15 05:15:53 +01:00
private AutoMoqer _mocker;
protected AutoMoqer Mocker
{
get
{
if (_mocker == null)
{
_mocker = new AutoMoqer();
}
return _mocker;
}
}
2011-11-13 08:27:16 +01:00
protected Mock<RestProvider> MockedRestProvider { get; private set; }
private string VirtualPath
2011-11-13 08:27:16 +01:00
{
get
{
var virtualPath = Path.Combine(TempFolder, "VirtualNzbDrone");
if (!Directory.Exists(virtualPath)) Directory.CreateDirectory(virtualPath);
return virtualPath;
}
}
protected string TempFolder { get; private set; }
2011-11-13 08:27:16 +01:00
[SetUp]
2011-11-13 20:15:40 +01:00
public void TestBaseSetup()
2011-11-13 08:27:16 +01:00
{
2013-04-16 06:52:41 +02:00
GetType().IsPublic.Should().BeTrue("All Test fixtures should be public to work in mono.");
Mocker.SetConstant<ICacheManger>(new CacheManger());
Mocker.SetConstant(LogManager.GetLogger("TestLogger"));
LogManager.ReconfigExistingLoggers();
TempFolder = Path.Combine(Directory.GetCurrentDirectory(), "_temp_" + DateTime.Now.Ticks);
MockedRestProvider = new Mock<RestProvider>();
2012-04-23 01:14:02 +02:00
2011-11-13 08:27:16 +01:00
Directory.CreateDirectory(TempFolder);
}
2011-11-13 20:15:40 +01:00
[TearDown]
public void TestBaseTearDown()
{
2011-12-15 05:15:53 +01:00
_mocker = null;
try
{
if (Directory.Exists(TempFolder))
{
Directory.Delete(TempFolder, true);
}
}
catch (Exception)
{
}
2013-04-30 02:04:14 +02:00
2013-04-30 02:39:25 +02:00
/* if (TestContext.CurrentContext.Result.State == TestState.Failure || TestContext.CurrentContext.Result.State == TestState.Error)
2013-04-30 02:04:14 +02:00
{
var testName = TestContext.CurrentContext.Test.Name.ToLower();
if (EnvironmentProvider.IsLinux && testName.Contains("windows"))
{
throw new IgnoreException("windows specific test");
}
else if (testName.Contains("linux"))
{
throw new IgnoreException("linux specific test");
}
2013-04-30 02:39:25 +02:00
}*/
}
protected void WindowsOnly()
{
if (EnvironmentProvider.IsLinux)
{
throw new IgnoreException("windows specific test");
}
}
protected void LinuxOnly()
{
if (!EnvironmentProvider.IsLinux)
{
throw new IgnoreException("linux specific test");
2013-04-30 02:04:14 +02:00
}
2011-11-13 08:27:16 +01:00
}
protected void WithTempAsAppPath()
{
2013-05-11 01:53:50 +02:00
Mocker.GetMock<IEnvironmentProvider>()
.SetupGet(c => c.WorkingDirectory)
2011-11-13 08:27:16 +01:00
.Returns(VirtualPath);
}
protected string GetTestFilePath(string fileName)
{
return Path.Combine(Directory.GetCurrentDirectory(), "Files", fileName);
2011-11-13 08:27:16 +01:00
}
2013-05-13 04:52:55 +02:00
protected void VerifyEventPublished<TEvent>() where TEvent : class, IEvent
{
VerifyEventPublished<TEvent>(Times.Once());
}
2013-05-13 04:52:55 +02:00
protected void VerifyEventPublished<TEvent>(Times times) where TEvent : class, IEvent
{
Mocker.GetMock<IMessageAggregator>().Verify(c => c.PublishEvent(It.IsAny<TEvent>()), times);
}
2013-05-13 04:52:55 +02:00
protected void VerifyEventNotPublished<TEvent>() where TEvent : class, IEvent
{
Mocker.GetMock<IMessageAggregator>().Verify(c => c.PublishEvent(It.IsAny<TEvent>()), Times.Never());
}
2011-11-13 08:27:16 +01:00
}
}