public async Task GetSingleQuoteData_ShouldReturnQueryResultWithError_WhenErrorSendingRequestWithHttpClient() { var client = new AlphaVantageClient(_mockHttpFactory.Object, _mockAlphaVantageOptionsAccessor.Object, _mockParserFactory.Object, _mockLogger.Object); _mockHttpFactory = new Mock <IHttpClientFactory>(); var handlerMock = new Mock <HttpMessageHandler>(MockBehavior.Strict); handlerMock .Protected() .Setup <Task <HttpResponseMessage> >( "SendAsync", ItExpr.IsAny <HttpRequestMessage>(), ItExpr.IsAny <CancellationToken>() ) .Throws <Exception>(); var httpClient = new HttpClient(handlerMock.Object); _mockHttpFactory.Setup(x => x.CreateClient(It.IsAny <string>())).Returns(httpClient); var query = new SingleQuoteQuery(-1); var queryResult = await client.GetSingleQuoteData(query, "MSFT", "NASDAQ"); Assert.True(queryResult.HasError); Assert.NotNull(queryResult.ErrorMessage); }
public async Task GetSingleQuoteData_ShouldReturnSingleQuoteQueryResultWithoutError_WhenSuccessful() { var singleQuoteData = new SingleQuoteData( symbolId: 1, ticker: "MSFT", high: 1, low: 2, open: 3, previousClose: 4, volume: 5, change: 6, price: 7, changePercent: 0.9m, lastUpdated: DateTime.UtcNow, lastTradingDay: DateTime.UtcNow ); var client = new AlphaVantageClient(_mockHttpFactory.Object, _mockAlphaVantageOptionsAccessor.Object, _mockParserFactory.Object, _mockLogger.Object); SetupMockHttpClient("mockData", HttpStatusCode.OK); _singleQuoteDataCsvParser.Setup(x => x.ParseJson(-1, It.IsAny <string>())).Returns(singleQuoteData); var query = new SingleQuoteQuery(-1); var queryResult = await client.GetSingleQuoteData(query, "MSFT", "NASDAQ"); Assert.False(queryResult.HasError); Assert.Equal("MSFT", queryResult.Data.Ticker); Assert.Equal(singleQuoteData.LastUpdated, queryResult.Data.LastUpdated); }
public async Task GetSingleQuote_ShouldReturnErrorWhenUnknownSymbol() { var query = new SingleQuoteQuery(-1); var ticker = "AB1234567890"; var alphaVantageClient = new AlphaVantageClient(_mockHttpFactory, _mockAlphaVantageOptionsAccessor.Object, _parserFactory, _mockLogger.Object); SingleQuoteQueryResult singleQuoteResult = await alphaVantageClient.GetSingleQuoteData(query, ticker, "NYSE"); Assert.True(singleQuoteResult.HasError); Assert.False(string.IsNullOrEmpty(singleQuoteResult.ErrorMessage)); }
public async Task GetSingleQuoteData_ShouldReturnQueryResultWithError_WhenHttpRequestNotOK() { var client = new AlphaVantageClient(_mockHttpFactory.Object, _mockAlphaVantageOptionsAccessor.Object, _mockParserFactory.Object, _mockLogger.Object); SetupMockHttpClient("", HttpStatusCode.Unauthorized); var query = new SingleQuoteQuery(-1); var queryResult = await client.GetSingleQuoteData(query, "MSFT", "NASDAQ"); Assert.True(queryResult.HasError); }
public async Task GetSingleQuoteData_ShouldReturnQueryResultWithError_WhenParsingError() { var query = new SingleQuoteQuery(-1); var client = new AlphaVantageClient(_mockHttpFactory.Object, _mockAlphaVantageOptionsAccessor.Object, _mockParserFactory.Object, _mockLogger.Object); SetupMockHttpClient("", HttpStatusCode.OK); _singleQuoteDataCsvParser.Setup(x => x.ParseJson(It.IsAny <int>(), It.IsAny <string>())).Throws(new Exception()); var queryResult = await client.GetSingleQuoteData(query, "MSFT", "NASDAQ"); Assert.True(queryResult.HasError); Assert.NotNull(queryResult.ErrorMessage); }
public async Task GetSingleQuote_ShouldReturnSingleQuoteStockData() { var query = new SingleQuoteQuery(-1); var ticker = "MSFT"; var alphaVantageClient = new AlphaVantageClient(_mockHttpFactory, _mockAlphaVantageOptionsAccessor.Object, _parserFactory, _mockLogger.Object); SingleQuoteQueryResult singleQuoteResult = await alphaVantageClient.GetSingleQuoteData(query, ticker, "NASDAQ"); Assert.False(singleQuoteResult.HasError); Assert.True(singleQuoteResult.Data.Low >= 0); Assert.True(singleQuoteResult.Data.High >= 0); Assert.True(singleQuoteResult.Data.Open >= 0); Assert.True(singleQuoteResult.Data.Volume >= 0); Assert.True(singleQuoteResult.Data.Price >= 0); Assert.True(singleQuoteResult.Data.PreviousClose >= 0); Assert.True(singleQuoteResult.Data.LastUpdated > new DateTime()); Assert.True(singleQuoteResult.Data.LastTradingDay > new DateTime()); Assert.Equal(ticker, singleQuoteResult.Data.Ticker); }