using System; using Moq; using NUnit.Framework; using NzbDrone.Common.Cache; using NzbDrone.Common.Cloud; using NzbDrone.Common.EnvironmentInfo; using NzbDrone.Common.Http; using NzbDrone.Common.Http.Dispatchers; using NzbDrone.Common.Http.Proxy; using NzbDrone.Common.TPL; using NzbDrone.Core.Configuration; using NzbDrone.Core.Http; using NzbDrone.Core.Parser; using NzbDrone.Core.Security; using NzbDrone.Test.Common; namespace NzbDrone.Core.Test.Framework { public abstract class CoreTest : TestBase { protected void UseRealHttp() { Mocker.GetMock().SetupGet(c => c.Version).Returns(new Version("3.0.0")); Mocker.GetMock().SetupGet(c => c.Version).Returns("1.0.0"); Mocker.GetMock().SetupGet(c => c.Name).Returns("TestOS"); Mocker.SetConstant(new HttpProxySettingsProvider(Mocker.Resolve())); Mocker.SetConstant(new ManagedWebProxyFactory(Mocker.Resolve())); Mocker.SetConstant(new X509CertificateValidationService(Mocker.Resolve(), TestLogger)); Mocker.SetConstant(new ManagedHttpDispatcher(Mocker.Resolve(), Mocker.Resolve(), Mocker.Resolve(), Mocker.Resolve(), Mocker.Resolve())); Mocker.SetConstant(new HttpClient(Array.Empty(), Mocker.Resolve(), Mocker.Resolve(), Mocker.Resolve(), TestLogger)); Mocker.SetConstant(new RadarrCloudRequestBuilder()); } // Used for tests that rely on parsing working correctly. protected void UseRealParsingService() { // Mocker.SetConstant(new ParsingService(Mocker.Resolve(), Mocker.Resolve(), Mocker.Resolve(), TestLogger)); } // Used for tests that rely on parsing working correctly. Does some minimal parsing using the old static methods. protected void ParseMovieTitle() { Mocker.GetMock().Setup(c => c.ParseMovieInfo(It.IsAny(), It.IsAny>())) .Returns>((title, helpers) => { var result = Parser.Parser.ParseMovieTitle(title); if (result != null) { result.Quality = QualityParser.ParseQuality(title); } return result; }); } } public abstract class CoreTest : CoreTest where TSubject : class { private TSubject _subject; [SetUp] public void CoreTestSetup() { _subject = null; } protected TSubject Subject { get { if (_subject == null) { _subject = Mocker.Resolve(); } return _subject; } } } }