Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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));
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        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);
        }