using System; using System.Collections.Generic; using System.Linq; using System.Threading; using FluentAssertions; using Moq; using NUnit.Framework; using NzbDrone.Core.Indexers; using NzbDrone.Core.Indexers.Newznab; using NzbDrone.Core.Parser.Model; using NzbDrone.Core.Test.Framework; namespace NzbDrone.Core.Test.IndexerTests { public class FetchAndParseRssServiceFixture : CoreTest { private List _indexers; [SetUp] public void Setup() { _indexers = new List(); _indexers.Add(new Newznab()); _indexers.Add(new Newznab()); _indexers.Add(new Newznab()); _indexers.Add(new Newznab()); _indexers.Add(new Newznab()); _indexers.Add(new Newznab()); _indexers.Add(new Newznab()); _indexers.Add(new Newznab()); _indexers.Add(new Newznab()); _indexers.Add(new Newznab()); _indexers.Add(new Newznab()); _indexers.Add(new Newznab()); _indexers.Add(new Newznab()); _indexers.Add(new Newznab()); _indexers.Add(new Newznab()); Mocker.SetConstant>(_indexers); } [Test] [Explicit] public void should_call_fetch_on_all_indexers_at_the_same_time() { var callsToFetch = new List(); Mocker.GetMock().Setup(c => c.FetchRss(It.IsAny())) .Returns(new List()) .Callback((() => { Thread.Sleep(2000); Console.WriteLine(DateTime.Now); callsToFetch.Add(DateTime.Now); })); Mocker.GetMock().Setup(c => c.GetAvailableIndexers()).Returns(_indexers); Subject.Fetch(); var first = callsToFetch.Min(); var last = callsToFetch.Max(); (last - first).Should().BeLessThan(TimeSpan.FromSeconds(1)); } } }