public async Task StockRepository_GetStockVm_Success() { var dataFixture = new StockDataFixture(); var repository = StockRepositoryFactory.Create(); repository.MockDbContext.Setup(s => s.StockQuotes).Returns(dataFixture.QuoteDataFixture.MockDataSet.Object); repository.MockDbContext.Setup(s => s.Stocks).Returns(dataFixture.MockDataSet.Object); var ticker = dataFixture.Entities.First().Id; var result = await repository.GetStockAsync(ticker); var quotes = dataFixture.QuoteDataFixture.Entities.Where(s => s.Ticker == ticker).ToList(); Assert.AreEqual(result.Ticker, ticker); var lastRecord = quotes.Where(s => s.Ticker == ticker).OrderByDescending(s => s.Date).First(); Assert.AreEqual(result.Open, lastRecord.Open); Assert.AreEqual(result.Close, lastRecord.Close); Assert.AreEqual(result.AllTimeHigh, quotes.Where(s => s.Ticker == ticker).Max(s => s.High)); Assert.AreEqual(result.AllTimeLow, quotes.Where(s => s.Ticker == ticker).Min(s => s.Low)); var fiftyTwoWeekAgo = DateTime.Today.AddYears(-1); Assert.AreEqual(result.AllTimeHigh, quotes.Where(s => s.Ticker == ticker && s.Date >= fiftyTwoWeekAgo).Max(s => s.High)); Assert.AreEqual(result.AllTimeLow, quotes.Where(s => s.Ticker == ticker && s.Date >= fiftyTwoWeekAgo).Min(s => s.Low)); }
public async Task StockRepository_GetStockVm_Failed_BadTicker() { var dataFixture = new StockDataFixture(); var repository = StockRepositoryFactory.Create(); repository.MockDbContext.Setup(s => s.StockQuotes).Returns(dataFixture.QuoteDataFixture.MockDataSet.Object); repository.MockDbContext.Setup(s => s.Stocks).Returns(dataFixture.MockDataSet.Object); var ticker = dataFixture.Entities.First().Id; var result = await repository.GetStockAsync($"{ticker}123"); Assert.IsNull(result); }
public async Task StockRepository_GetStockWithChartVm_ByTake_Failed_FailedLoader() { var dataFixture = new StockDataFixture(); var processor = new StockProcessorTestFixture(); var repository = StockRepositoryFactory.Create(processor); repository.MockDbContext.Setup(s => s.StockQuotes).Returns(dataFixture.QuoteDataFixture.MockDataSet.Object); repository.MockDbContext.Setup(s => s.Stocks).Returns(dataFixture.MockDataSet.Object); processor.LoadCompactAsyncResult = AnalyzerResult.Fail("Failed to load."); var result = await repository.GetChartAsync("ticker", 30); Assert.IsNull(result); }
public async Task Process_Success_MarketNotClosed_MaxDayMinus2() { var mockDbContext = new Mock <AnalyzerDbContext>(); var stockDataFixture = new StockDataFixture(); var stock = stockDataFixture.Entities.First(); var ticker = stock.Id; stock.LastLoadDate = DateTime.Today.AddDays(-2); stock.MaxDate = stock.LastLoadDate; var mockStockDataSet = stockDataFixture.MockDataSet; mockStockDataSet.Setup(s => s.Add(It.IsAny <Stock>())).Returns((Stock s) => s); mockDbContext.Setup(s => s.Stocks).Returns(mockStockDataSet.Object); stockDataFixture.QuoteDataFixture.Entities.Remove(stockDataFixture.QuoteDataFixture.Entities.First(s => s.Ticker == ticker && s.Date == DateTime.Today)); stockDataFixture.QuoteDataFixture.Entities.Remove(stockDataFixture.QuoteDataFixture.Entities.First(s => s.Ticker == ticker && s.Date == DateTime.Today.AddDays(-1))); var mockStockQuoteDataSet = stockDataFixture.QuoteDataFixture.MockDataSet; mockDbContext.Setup(s => s.StockQuotes).Returns(mockStockQuoteDataSet.Object); var stockLoader = new StockLoaderTestFixture(); var processor = new StockProcessorTestFixture(mockDbContext, stockLoader) { IsMarketClosedValue = false }; stockLoader.Quotes = stockDataFixture.QuoteDataFixture.Entities.Where(s => s.Ticker == ticker).ToList(); stockLoader.Quotes.Add(new StockQuote() { Ticker = ticker, Date = DateTime.Today.AddDays(-1) }); stockLoader.Quotes.Add(new StockQuote() { Ticker = ticker, Date = DateTime.Today }); var result = await processor.LoadCompactAsync(ticker); mockStockQuoteDataSet.Verify(s => s.Add(It.IsAny <StockQuote>()), Times.Once); mockStockDataSet.Verify(s => s.Add(It.IsAny <Stock>()), Times.Never); mockDbContext.Verify(s => s.SaveChangesAsync(), Times.Once); Assert.IsTrue(result.Succeeded); Assert.AreEqual(stock.MaxDate, DateTime.Today.AddDays(-1)); }
public async Task StockRepository_GetStockWithChartVm_ByTake_Success() { var dataFixture = new StockDataFixture(); var repository = StockRepositoryFactory.Create(); repository.MockDbContext.Setup(s => s.StockQuotes).Returns(dataFixture.QuoteDataFixture.MockDataSet.Object); repository.MockDbContext.Setup(s => s.Stocks).Returns(dataFixture.MockDataSet.Object); var ticker = dataFixture.Entities.First().Id; var take = 3; var result = await repository.GetChartAsync($"{ticker}", take); Assert.AreEqual(take, result.ChartQuotes.Count()); foreach (var chartQuote in result.ChartQuotes) { var orgQuote = dataFixture.QuoteDataFixture.Entities.Where(s => s.Ticker == ticker).OrderByDescending(s => s.Date).Take(take).First(s => s.Date == DateTime.Parse(chartQuote.Date)); Assert.AreEqual(chartQuote.Close, orgQuote.Close); Assert.AreEqual(chartQuote.High, orgQuote.High); Assert.AreEqual(chartQuote.Low, orgQuote.Low); Assert.AreEqual(chartQuote.Open, orgQuote.Open); } }
public async Task StockRepository_GetStockWithChartVm_ByDate_Success() { var dataFixture = new StockDataFixture(); var repository = StockRepositoryFactory.Create(); repository.MockDbContext.Setup(s => s.StockQuotes).Returns(dataFixture.QuoteDataFixture.MockDataSet.Object); repository.MockDbContext.Setup(s => s.Stocks).Returns(dataFixture.MockDataSet.Object); var ticker = dataFixture.Entities.First().Id; var startDate = new DateTime(2012, 1, 1); var endDate = DateTime.Today; var result = await repository.GetChartAsync($"{ticker}", startDate.ToString("yyyyMMdd"), endDate.ToString("yyyyMMdd")); Assert.AreEqual(dataFixture.QuoteDataFixture.Entities.Count(s => s.Ticker == ticker && s.Date >= startDate && s.Date <= endDate), result.ChartQuotes.Count()); foreach (var chartQuote in result.ChartQuotes) { var orgQuote = dataFixture.QuoteDataFixture.Entities.First(s => s.Ticker == ticker && s.Date == DateTime.Parse(chartQuote.Date)); Assert.AreEqual(chartQuote.Close, orgQuote.Close); Assert.AreEqual(chartQuote.High, orgQuote.High); Assert.AreEqual(chartQuote.Low, orgQuote.Low); Assert.AreEqual(chartQuote.Open, orgQuote.Open); } }