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();
        }
Пример #2
0
        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();
        }