| 
									
										
										
										
											2011-12-14 20:15:53 -08:00
										 |  |  | using System; | 
					
						
							| 
									
										
										
										
											2011-11-12 23:27:16 -08:00
										 |  |  | using System.IO; | 
					
						
							| 
									
										
										
										
											2013-04-15 21:52:41 -07:00
										 |  |  | using FluentAssertions; | 
					
						
							| 
									
										
										
										
											2011-11-12 23:27:16 -08:00
										 |  |  | using Moq; | 
					
						
							| 
									
										
										
										
											2013-02-17 23:59:43 -08:00
										 |  |  | using NLog; | 
					
						
							| 
									
										
										
										
											2011-11-12 23:27:16 -08:00
										 |  |  | using NUnit.Framework; | 
					
						
							|  |  |  | using NzbDrone.Common; | 
					
						
							| 
									
										
										
										
											2013-02-24 11:18:48 -08:00
										 |  |  | using NzbDrone.Common.Eventing; | 
					
						
							| 
									
										
										
										
											2011-11-13 16:22:18 -08:00
										 |  |  | using NzbDrone.Test.Common.AutoMoq; | 
					
						
							| 
									
										
										
										
											2011-11-12 23:27:16 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | namespace NzbDrone.Test.Common | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2013-03-29 16:00:38 -07:00
										 |  |  |     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-02-02 11:39:27 -08:00
										 |  |  |     public abstract class TestBase : LoggingTest | 
					
						
							| 
									
										
										
										
											2011-11-12 23:27:16 -08:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2011-12-14 20:15:53 -08:00
										 |  |  |         private AutoMoqer _mocker; | 
					
						
							|  |  |  |         protected AutoMoqer Mocker | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             get | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 if (_mocker == null) | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     _mocker = new AutoMoqer(); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 return _mocker; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2011-11-12 23:27:16 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-04 22:34:36 -08:00
										 |  |  |         protected Mock<RestProvider> MockedRestProvider { get; private set; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-01-19 12:59:36 -08:00
										 |  |  |         private string VirtualPath | 
					
						
							| 
									
										
										
										
											2011-11-12 23:27:16 -08:00
										 |  |  |         { | 
					
						
							|  |  |  |             get | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 var virtualPath = Path.Combine(TempFolder, "VirtualNzbDrone"); | 
					
						
							|  |  |  |                 if (!Directory.Exists(virtualPath)) Directory.CreateDirectory(virtualPath); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 return virtualPath; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-01-19 12:59:36 -08:00
										 |  |  |         protected string TempFolder { get; private set; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-12 23:27:16 -08:00
										 |  |  |         [SetUp] | 
					
						
							| 
									
										
										
										
											2011-11-13 11:15:40 -08:00
										 |  |  |         public void TestBaseSetup() | 
					
						
							| 
									
										
										
										
											2011-11-12 23:27:16 -08:00
										 |  |  |         { | 
					
						
							| 
									
										
										
										
											2013-04-15 21:52:41 -07:00
										 |  |  |             GetType().IsPublic.Should().BeTrue("All Test fixtures should be public to work in mono."); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-01-19 12:59:36 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-02-17 23:59:43 -08:00
										 |  |  |             Mocker.SetConstant(LogManager.GetLogger("TestLogger")); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-03-03 21:53:02 -08:00
										 |  |  |             LogManager.ReconfigExistingLoggers(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-01-19 12:59:36 -08:00
										 |  |  |             TempFolder = Path.Combine(Directory.GetCurrentDirectory(), "_temp_" + DateTime.Now.Ticks); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-04 22:34:36 -08:00
										 |  |  |             MockedRestProvider = new Mock<RestProvider>(); | 
					
						
							|  |  |  |             ReportingService.RestProvider = MockedRestProvider.Object; | 
					
						
							| 
									
										
										
										
											2012-04-22 16:14:02 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-12 23:27:16 -08:00
										 |  |  |             Directory.CreateDirectory(TempFolder); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-13 11:15:40 -08:00
										 |  |  |         [TearDown] | 
					
						
							|  |  |  |         public void TestBaseTearDown() | 
					
						
							|  |  |  |         { | 
					
						
							| 
									
										
										
										
											2011-12-14 20:15:53 -08:00
										 |  |  |             _mocker = null; | 
					
						
							| 
									
										
										
										
											2013-01-19 12:59:36 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |             try | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 if (Directory.Exists(TempFolder)) | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     Directory.Delete(TempFolder, true); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             catch (Exception) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2011-11-12 23:27:16 -08:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         protected void WithTempAsAppPath() | 
					
						
							|  |  |  |         { | 
					
						
							| 
									
										
										
										
											2012-03-06 18:59:43 -08:00
										 |  |  |             Mocker.GetMock<EnvironmentProvider>() | 
					
						
							| 
									
										
										
										
											2013-03-30 14:29:02 -07:00
										 |  |  |                 .SetupGet(c => c.WorkingDirectory) | 
					
						
							| 
									
										
										
										
											2011-11-12 23:27:16 -08:00
										 |  |  |                 .Returns(VirtualPath); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         protected string GetTestFilePath(string fileName) | 
					
						
							|  |  |  |         { | 
					
						
							| 
									
										
										
										
											2013-02-17 11:19:38 -08:00
										 |  |  |             return Path.Combine(Directory.GetCurrentDirectory(), "Files", fileName); | 
					
						
							| 
									
										
										
										
											2011-11-12 23:27:16 -08:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2013-02-24 11:18:48 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-02-24 11:39:31 -08:00
										 |  |  |         protected void VerifyEventPublished<TEvent>() where TEvent : IEvent | 
					
						
							| 
									
										
										
										
											2013-02-24 11:18:48 -08:00
										 |  |  |         { | 
					
						
							| 
									
										
										
										
											2013-03-07 13:34:56 +09:00
										 |  |  |             VerifyEventPublished<TEvent>(Times.Once()); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         protected void VerifyEventPublished<TEvent>(Times times) where TEvent : IEvent | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             Mocker.GetMock<IEventAggregator>().Verify(c => c.Publish(It.IsAny<TEvent>()), times); | 
					
						
							| 
									
										
										
										
											2013-02-24 11:18:48 -08:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         protected void VerifyEventNotPublished<TEvent>() where TEvent : IEvent | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             Mocker.GetMock<IEventAggregator>().Verify(c => c.Publish(It.IsAny<TEvent>()), Times.Never()); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2011-11-12 23:27:16 -08:00
										 |  |  |     } | 
					
						
							|  |  |  | } |