public async Task DoPeriodicWork_CountCalls() { var feedData = new CandleMonitorFeeds(It.IsAny <ProductType>(), It.IsAny <CandleGranularity>(), It.IsAny <bool>(), DateTime.UtcNow); var subject = ResetSubject(feedData); // Use a callback on the mockCandleProducer.Send, in order to count how many times the Producer is called for each CandleSource setupMockCandleProducer.Callback(CountCandleSourceEvents()); var mockProductsService = new Mock <IProductsService>(); mockProductsService.Setup(o => o.GetHistoricRatesAsync( It.IsAny <ProductType>(), It.IsAny <DateTime>(), It.IsAny <DateTime>(), It.IsAny <CandleGranularity>())) .ReturnsAsync(new List <Candle> { new Candle { Close = 100.0M, High = 110.0M, Low = 90M, Open = 95.0M, Time = DateTime.UtcNow, Volume = 10.0M } }); mockCoinbaseProClient.Setup(o => o.ProductsService).Returns(mockProductsService.Object); await subject.StartupAsync(); await subject.DoPeriodicWorkAsync(); mockProductsService.Verify(o => o.GetHistoricRatesAsync(It.IsAny <ProductType>(), It.IsAny <DateTime>(), It.IsAny <DateTime>(), It.IsAny <CandleGranularity>()), Times.Exactly(1)); Assert.That(iCountCandleSourceEvents.RestCall, Is.EqualTo(1)); }
public void EnsureTradeFromUtcIsUtc() { Assert.That(utcKind.Kind, Is.EqualTo(DateTimeKind.Utc)); var subject = new CandleMonitorFeeds(ProductType.BtcUsd, CandleGranularity.Minutes1, true, utcKind); Assert.That(subject.TradeFromUtc, Is.Not.Null); Assert.That(subject.TradeFromUtc.Value, Is.EqualTo(utcKind)); }
public void EnsureMarketFeedSettings(ProductType productType, CandleGranularity granularity) { var subject = new CandleMonitorFeeds(productType, granularity, true, null); Assert.That(subject.Granularity, Is.EqualTo(granularity)); Assert.That(subject.Granularity, Is.EqualTo(subject.MarketFeedSettings.Granularity)); Assert.That(subject.ProductId, Is.EqualTo(productType)); Assert.That(subject.ProductId, Is.EqualTo(subject.MarketFeedSettings.ProductId)); }
public async Task StartUp_Workflow_Set() { var feedData = new CandleMonitorFeeds(It.IsAny <ProductType>(), It.IsAny <CandleGranularity>(), It.IsAny <bool>(), DateTime.UtcNow); var subject = ResetSubject(feedData); await subject.StartupAsync(); Assert.That(fakeWorkflow.CandleMonitor.Task.IsCompleted, Is.EqualTo(true)); }
public CandleMonitorData(CandleMonitorFeeds item, ICandleProvider candleProvider, IAppSettingCandleMonitor appSetting) { Settings = item.MarketFeedSettings; var p = candleProvider.Load(Settings); // Just populate the provider DataStores, don't get any data LastRunUtc = p.LastUpdatedUtc; IsFastUpdate = item.TradeFromUtc.HasValue || (item.HasOverlay && appSetting.HasOverlayFastUpdate); HasOverlay = item.HasOverlay; DataSource = candleProvider.DataStores[Settings]; BatchSize = IsFastUpdate ? 60 : 25; }
private CandleMonitor ResetSubject(CandleMonitorFeeds feedData) { iCountCandleSourceEvents = new CandleSourceEventSummary(); mockCoinbaseProClient = new Mock <ICoinbaseProClient>(); fakeWorkflow = StartupWorkflow.ForCandleMonitorOnly(); var mockCandleDataSource = new Mock <ICandleDataSource>(); mockCandleDataSource.Setup(o => o.Load(DateTime.UtcNow)).ReturnsAsync(Mock.Of <TimeSeries>()); mockCandleDataSource.SetupProperty(o => o.LastUpdatedUtc, DateTime.UtcNow.AddDays(-100)); var mockCandleProvider = new Mock <ICandleProvider>(); mockCandleProvider.Setup(o => o.Load(Mock.Of <MarketFeedSettings>()).LastUpdatedUtc).Returns(DateTime.UtcNow.AddDays(-100)); mockCandleProvider.SetupGet(o => o.DataStores[It.IsAny <MarketFeedSettings>()]).Returns(mockCandleDataSource.Object); var mockCandleMonitorFeedProvider = new Mock <ICandleMonitorFeedProvider>(); mockCandleMonitorFeedProvider.Setup(o => o.GetFeeds()).Returns(new List <CandleMonitorFeeds> { feedData }); var mockCandleProducer = new Mock <ICandleProducer>(); setupMockCandleProducer = mockCandleProducer.Setup(o => o.Send(It.IsAny <CandlesReceivedEventArgs>())); var fakeAppSettings = Options.Create(new AppSetting()); var fakeLogger = NUnitOutputLogger.Create <CandleMonitor>(); var subject = new CandleMonitor( mockCoinbaseProClient.Object, fakeWorkflow, mockCandleProvider.Object, mockCandleMonitorFeedProvider.Object, mockCandleProducer.Object, fakeAppSettings, fakeLogger); return(subject); }
private static CandleMonitorData MockCandleMonitorData_ForIsFastUpdate( MarketFeedSettings settings, bool hasOverlay, bool appSettingHasOverlayFastUpdate, DateTime?tradeFromUtc) { var feed = new CandleMonitorFeeds(settings.ProductId, settings.Granularity, hasOverlay, tradeFromUtc); var mockCandleDataSource = new Mock <ICandleDataSource>(); var mockCandleProvider = new Mock <ICandleProvider>(); mockCandleProvider.Setup(o => o.Load(settings).LastUpdatedUtc).Returns(DateTime.UtcNow); mockCandleProvider.SetupGet(o => o.DataStores[settings]).Returns(mockCandleDataSource.Object); var mockAppSetting = new Mock <IAppSettingCandleMonitor>(); mockAppSetting.SetupProperty(o => o.HasOverlayFastUpdate, appSettingHasOverlayFastUpdate); var c = new CandleMonitorData(feed, mockCandleProvider.Object, mockAppSetting.Object); return(c); }
public void EnsureTradeFromUtcNull() { var subject = new CandleMonitorFeeds(ProductType.BtcUsd, CandleGranularity.Minutes1, true, null); Assert.That(subject.TradeFromUtc, Is.Null); }
public void EnsureHasOverlay(bool hasOverlay) { var subject = new CandleMonitorFeeds(ProductType.BtcUsd, CandleGranularity.Minutes1, hasOverlay, null); Assert.That(subject.HasOverlay, Is.EqualTo(hasOverlay)); }
public async Task <CandleSourceEventSummary> StartUp_Calls_Producer_With_CandleSource(CandleMonitorFeeds feedData) { var subject = ResetSubject(feedData); // Use a callback on the mockCandleProducer.Send, in order to count how many times the Producer is called for each CandleSource setupMockCandleProducer.Callback(CountCandleSourceEvents()); await subject.StartupAsync(); return(iCountCandleSourceEvents); }