public async Task ImportNoLogger() { var mockRepository = new MockRepository(MockBehavior.Strict); var stock = new Stock(Guid.NewGuid()); stock.List("ABC", "ABC Pty Ltd", new Date(2010, 01, 01), false, AssetCategory.InternationalStocks); var cancellationToken = new CancellationToken(); var prices = new DataServices.StockPrice[] { }; var dataService = mockRepository.Create <ILiveStockPriceService>(); dataService.Setup(x => x.GetMultiplePrices(new[] { "ABC" }, cancellationToken)).Returns(Task <IEnumerable <DataServices.StockPrice> > .FromResult(prices.AsEnumerable())); var stockQuery = mockRepository.Create <IStockQuery>(); stockQuery.Setup(x => x.All(Date.Today)).Returns(new[] { stock }); stockQuery.Setup(x => x.Get("ABC", Date.Today)).Returns(stock); var stockService = mockRepository.Create <IStockService>(); stockService.Setup(x => x.UpdateCurrentPrice(stock.Id, 0.10m)); var importer = new LivePriceImporter(stockQuery.Object, stockService.Object, dataService.Object, null); await importer.Import(cancellationToken); mockRepository.Verify(); }
public async Task ImportDataReturned() { var mockRepository = new MockRepository(MockBehavior.Strict); var priceHistory = mockRepository.Create <IStockPriceHistory>(); priceHistory.SetupGet(x => x.LatestDate).Returns(new Date(2015, 01, 01)); var stock = new Stock(Guid.NewGuid()); stock.List("ABC", "ABC Pty Ltd", new Date(2010, 01, 01), false, AssetCategory.InternationalStocks); stock.SetPriceHistory(priceHistory.Object); var cancellationToken = new CancellationToken(); var prices = new DataServices.StockPrice[] { new DataServices.StockPrice("ABC", Date.Today.AddDays(-1), 0.10m) }; var dataService = mockRepository.Create <IHistoricalStockPriceService>(); dataService.Setup(x => x.GetHistoricalPriceData("ABC", new DateRange(new Date(2015, 01, 02), Date.Today.AddDays(-1)), cancellationToken)).Returns(Task <IEnumerable <DataServices.StockPrice> > .FromResult(prices.AsEnumerable())); var stockQuery = mockRepository.Create <IStockQuery>(); stockQuery.Setup(x => x.All()).Returns(new[] { stock }); var stockService = mockRepository.Create <IStockService>(); IEnumerable <Domain.Stocks.StockPrice> savedPrices = null; stockService.Setup(x => x.UpdateClosingPrices(stock.Id, It.IsAny <IEnumerable <Domain.Stocks.StockPrice> >())).Returns(ServiceResult.Ok()).Callback <Guid, IEnumerable <Domain.Stocks.StockPrice> >((a, b) => savedPrices = b).Verifiable(); var tradingCalendar = mockRepository.Create <ITradingCalendar>(); tradingCalendar.Setup(x => x.IsTradingDay(It.IsAny <Date>())).Returns(true); tradingCalendar.Setup(x => x.PreviousTradingDay(Date.Today.AddDays(-1))).Returns(Date.Today.AddDays(-1)); var logger = mockRepository.Create <ILogger <HistoricalPriceImporter> >(MockBehavior.Loose); var importer = new HistoricalPriceImporter(stockQuery.Object, stockService.Object, tradingCalendar.Object, dataService.Object, logger.Object); await importer.Import(cancellationToken); savedPrices.Should().Equal(new[] { new Domain.Stocks.StockPrice(Date.Today.AddDays(-1), 0.10m) }); mockRepository.Verify(); }