public void TestFailedFetchRequestProvider_MultiplePages() { // Our set of CacheFetchFailures var failuresPage1 = new List <ICacheFetchFailure> { Mock.Of <ICacheFetchFailure>(), Mock.Of <ICacheFetchFailure>() }; var failuresPage2 = new List <ICacheFetchFailure> { Mock.Of <ICacheFetchFailure>() }; // Stub this so the 'repository' will return the first page, second page then empty page var cacheProgress = new Mock <ICacheProgress>(); cacheProgress.SetupSequence <IEnumerable <ICacheFetchFailure> >(c => c.FetchPage(It.IsAny <int>(), It.IsAny <int>())) .Returns(failuresPage1) .Returns(failuresPage2) .Returns(new List <ICacheFetchFailure>()) .Throws <InvalidOperationException>(); var provider = new FailedCacheFetchRequestProvider(cacheProgress.Object, 2); // We should get three ICacheFetchRequests in total, followed by a null to signify that there are no more ICacheFetchRequests Assert.IsNotNull(provider.GetNext(new ThrowImmediatelyDataLoadEventListener())); Assert.IsNotNull(provider.GetNext(new ThrowImmediatelyDataLoadEventListener())); Assert.IsNotNull(provider.GetNext(new ThrowImmediatelyDataLoadEventListener())); Assert.IsNull(provider.GetNext(new ThrowImmediatelyDataLoadEventListener())); }
public void TestFailedFetchRequestProvider_CreationOfFetchRequest() { var failure = Mock.Of <ICacheFetchFailure>(); failure.FetchRequestStart = new DateTime(2009, 8, 5, 8, 0, 0); failure.FetchRequestEnd = new DateTime(2009, 8, 5, 16, 0, 0); failure.LastAttempt = new DateTime(2016, 1, 1, 12, 0, 0); failure.ResolvedOn = null; var failures = new List <ICacheFetchFailure> { failure }; var cacheProgress = new Mock <ICacheProgress>(); cacheProgress.Setup(c => c.FetchPage(It.IsAny <int>(), It.IsAny <int>())).Returns(failures); var provider = new FailedCacheFetchRequestProvider(cacheProgress.Object, 2); var fetchRequest = provider.GetNext(new ThrowImmediatelyDataLoadEventListener()); Assert.IsNotNull(fetchRequest); Assert.AreEqual(fetchRequest.ChunkPeriod, new TimeSpan(8, 0, 0)); Assert.AreEqual(fetchRequest.Start, failure.FetchRequestStart); Assert.IsTrue(fetchRequest.IsRetry); cacheProgress.Verify(); }