using System; using System.Collections.Generic; using FizzWare.NBuilder; using Moq; using NUnit.Framework; using NzbDrone.Core.IndexerSearch; using NzbDrone.Core.Indexers; using NzbDrone.Core.Model; using NzbDrone.Core.Model.Notification; using NzbDrone.Core.Test.Framework; using NzbDrone.Core.Tv; namespace NzbDrone.Core.Test.IndexerSearchTests { public abstract class IndexerSearchTestBase : CoreTest where TSearch : IndexerSearchBase { protected Series _series; protected Episode _episode; protected ProgressNotification notification = new ProgressNotification("Testing"); protected Mock _indexer1; protected Mock _indexer2; protected List _indexers; protected IList _parseResults; [SetUp] public void Setup() { _series = Builder .CreateNew() .Build(); _episode = Builder .CreateNew() .With(e => e.SeriesId = _series.Id) .With(e => e.Series = _series) .Build(); _parseResults = Builder .CreateListOfSize(10) .Build(); _indexer1 = new Mock(); _indexer2 = new Mock(); _indexers = new List { _indexer1.Object, _indexer2.Object }; Mocker.GetMock() .Setup(c => c.GetEnabledIndexers()) .Returns(_indexers); } protected void WithValidIndexers() { _indexer1.Setup(c => c.FetchEpisode(It.IsAny(), It.IsAny(), It.IsAny())) .Returns(_parseResults); _indexer1.Setup(c => c.FetchDailyEpisode(It.IsAny(), It.IsAny())) .Returns(_parseResults); _indexer1.Setup(c => c.FetchPartialSeason(It.IsAny(), It.IsAny(), It.IsAny())) .Returns(_parseResults); _indexer2.Setup(c => c.FetchEpisode(It.IsAny(), It.IsAny(), It.IsAny())) .Returns(_parseResults); _indexer2.Setup(c => c.FetchDailyEpisode(It.IsAny(), It.IsAny())) .Returns(_parseResults); _indexer2.Setup(c => c.FetchPartialSeason(It.IsAny(), It.IsAny(), It.IsAny())) .Returns(_parseResults); } protected void WithBrokenIndexers() { _indexer1.Setup(c => c.FetchEpisode(It.IsAny(), It.IsAny(), It.IsAny())) .Throws(new Exception()); _indexer1.Setup(c => c.FetchDailyEpisode(It.IsAny(), It.IsAny())) .Throws(new Exception()); _indexer1.Setup(c => c.FetchPartialSeason(It.IsAny(), It.IsAny(), It.IsAny())) .Throws(new Exception()); _indexer2.Setup(c => c.FetchEpisode(It.IsAny(), It.IsAny(), It.IsAny())) .Throws(new Exception()); _indexer2.Setup(c => c.FetchDailyEpisode(It.IsAny(), It.IsAny())) .Throws(new Exception()); _indexer2.Setup(c => c.FetchPartialSeason(It.IsAny(), It.IsAny(), It.IsAny())) .Throws(new Exception()); _indexer1.SetupGet(c => c.Name).Returns("Indexer1"); _indexer1.SetupGet(c => c.Name).Returns("Indexer2"); } } }