public void GetPrices_FourMonths() { // Arrange List <SecurityDaily> dataFromQuandl = new List <SecurityDaily>() { { new SecurityDaily { Ticker = "GOOGL", Date = "2016-01-04", Open = (Decimal)762.2, High = (Decimal)762.2, Low = (Decimal)747.54, Close = (Decimal)759.44, Volume = (Decimal)3369068.0 } } }; // Quandl should be called 4 times: for 2016-01, 2016-02, 2016-03, 2016-04 String ticker = "GOOGL"; String start = "2016-01-12"; String end = "2016-04-23"; // Act _mockQuandlConsumer.Setup(x => x.GetDailyPrices(It.IsAny <String>(), It.IsAny <String>(), It.IsAny <String>())) .Returns(Task.FromResult(dataFromQuandl)); var controller = new PricesController(_mockQuandlConsumer.Object); var result = controller.GetPrices(ticker, start, end); // Assert _mockQuandlConsumer.Verify(x => x.GetDailyPrices(It.IsAny <String>(), It.IsAny <String>(), It.IsAny <String>()), Times.Exactly(4)); }
public void GetPrices_MonthlyAverage() { // Arrange List <SecurityDaily> dataFromQuandl = new List <SecurityDaily>() { { new SecurityDaily { Ticker = "GOOGL", Date = "2016-01-04", Open = (Decimal)762.2, High = (Decimal)762.2, Low = (Decimal)747.54, Close = (Decimal)759.44, Volume = (Decimal)3369068.0 } }, { new SecurityDaily { Ticker = "GOOGL", Date = "2016-01-05", Open = (Decimal)764.1, High = (Decimal)769.2, Low = (Decimal)755.65, Close = (Decimal)761.53, Volume = (Decimal)2260795.0 } }, { new SecurityDaily { Ticker = "GOOGL", Date = "2016-01-06", Open = (Decimal)750.37, High = (Decimal)765.73, Low = (Decimal)748.0, Close = (Decimal)759.33, Volume = (Decimal)2410301.0 } } }; String ticker = "GOOGL"; // Quandl should be called only once: for 2016-01 String start = "2016-01-05"; String end = "2016-01-23"; String startMonth = "2016-01-01"; String startNextMonth = "2016-02-01"; // Act _mockQuandlConsumer.Setup(x => x.GetDailyPrices(ticker, startMonth, startNextMonth)) .Returns(Task.FromResult(dataFromQuandl)); var controller = new PricesController(_mockQuandlConsumer.Object); var result = controller.GetPrices(ticker, start, end); // Assert _mockQuandlConsumer.Verify(x => x.GetDailyPrices(ticker, startMonth, startNextMonth), Times.Once()); var okResult = result.Should().BeOfType <OkObjectResult>().Subject; var securitySummary = okResult.Value.Should().BeAssignableTo <PricesController.SecuritySummary>().Subject; securitySummary._monthlyAverages.Count().Should().Be(1); securitySummary._monthlyAverages.First().As <PricesController.MonthlyAverage>()._month.Should().Be("2016-01"); securitySummary._monthlyAverages.First().As <PricesController.MonthlyAverage>()._open.Should().Be((Decimal)758.89); securitySummary._monthlyAverages.First().As <PricesController.MonthlyAverage>()._close.Should().Be((Decimal)760.1); }