public async void GetAdxValuesAsync_Success_Test() { // Arrange var mockHttp = new MockHttpMessageHandler(); mockHttp .When("https://api.twelvedata.com/*") .Respond("application/json", "{\"meta\":{\"symbol\":\"AAPL\",\"interval\":\"1min\",\"currency\":\"USD\",\"exchange_timezone\":\"America/New_York\",\"exchange\":\"NASDAQ\",\"type\":\"Common Stock\",\"indicator\":{\"name\":\"ADX - Average Directional Index\",\"time_period\":14}},\"values\":[{\"datetime\":\"2021-03-01 15:59:00\",\"adx\":\"15.69773\"}],\"status\":\"ok\"}"); TwelveDataClient twelveDataClient = new TwelveDataClient("TEST", mockHttp.ToHttpClient()); // Act var response = await twelveDataClient.GetAdxValuesAsync("TEST"); // Assert response?.ResponseStatus.Should().Be(Enums.TwelveDataClientResponseStatus.Ok); response?.ResponseMessage.Should().Be("RESPONSE_OK"); response?.Symbol.Should().Be("AAPL"); response?.Interval.Should().Be("1min"); response?.Currency.Should().Be("USD"); response?.ExchangeTimezone.Should().Be("America/New_York"); response?.Exchange.Should().Be("NASDAQ"); response?.Type.Should().Be("Common Stock"); response?.IndicatorName.Should().Be("ADX - Average Directional Index"); response?.TimePeriod.Should().Be(14); response?.Values[0]?.AdxValue.Should().Be(15.69773); response?.Values[0]?.Datetime.Should().Be(new DateTime(2021, 3, 1, 15, 59, 0)); }
public async void GetBollingerBandsAsync_Success_Test() { // Arrange var mockHttp = new MockHttpMessageHandler(); mockHttp .When("https://api.twelvedata.com/*") .Respond("application/json", "{\"meta\":{\"symbol\":\"AAPL\",\"interval\":\"1min\",\"currency\":\"USD\",\"exchange_timezone\":\"America/New_York\",\"exchange\":\"NASDAQ\",\"type\":\"Common Stock\",\"indicator\":{\"name\":\"BBANDS - Bollinger Bands®\",\"series_type\":\"close\",\"time_period\":20,\"sd\":2,\"ma_type\":\"SMA\"}},\"values\":[{\"datetime\":\"2021-03-01 15:59:00\",\"upper_band\":\"127.80482\",\"middle_band\":\"127.55686\",\"lower_band\":\"127.30890\"}],\"status\":\"ok\"}"); TwelveDataClient twelveDataClient = new TwelveDataClient("TEST", mockHttp.ToHttpClient()); // Act var response = await twelveDataClient.GetBollingerBandsAsync("TEST"); // Assert response?.ResponseStatus.Should().Be(Enums.TwelveDataClientResponseStatus.Ok); response?.ResponseMessage.Should().Be("RESPONSE_OK"); response?.Symbol?.Should().Be("AAPL"); response?.Interval.Should().Be("1min"); response?.Currency.Should().Be("USD"); response?.ExchangeTimezone.Should().Be("America/New_York"); response?.Exchange.Should().Be("NASDAQ"); response?.Type.Should().Be("Common Stock"); response?.MovingAverageType.Should().Be("SMA"); response?.IndicatorName.Should().Be("BBANDS - Bollinger Bands®"); response?.SeriesType.Should().Be("close"); response?.TimePeriod.Should().Be(20); response?.StandardDeviation.Should().Be(2); response?.Values[0]?.Datetime.Should().Be(new DateTime(2021, 3, 1, 15, 59, 0)); response?.Values[0]?.LowerBand.Should().Be(127.30890); response?.Values[0]?.MiddleBand.Should().Be(127.55686); response?.Values[0].UpperBand.Should().Be(127.80482); }
public async void GetTimeSeriesAsync_Success_Test() { // Arrange var mockHttp = new MockHttpMessageHandler(); mockHttp .When("https://api.twelvedata.com/*") .Respond("application/json", "{\"meta\":{\"symbol\":\"AAPL\",\"interval\":\"1min\",\"currency\":\"USD\",\"exchange_timezone\":\"America/New_York\",\"exchange\":\"NASDAQ\",\"type\":\"Common Stock\"},\"values\":[{\"datetime\":\"2021-03-01 15:59:00\",\"open\":\"127.63990\",\"high\":\"127.93000\",\"low\":\"127.63000\",\"close\":\"127.79000\",\"volume\":\"1691294\"}],\"status\":\"ok\"}"); TwelveDataClient twelveDataClient = new TwelveDataClient("TEST", mockHttp.ToHttpClient()); // Act var response = await twelveDataClient.GetTimeSeriesAsync("TEST"); // Assert response?.ResponseStatus.Should().Be(Enums.TwelveDataClientResponseStatus.Ok); response?.ResponseMessage.Should().Be("RESPONSE_OK"); response?.Values[0]?.Datetime.Should().Be(new DateTime(2021, 3, 1, 15, 59, 0)); response?.ExchangeTimezone.Should().Be("America/New_York"); response?.Exchange.Should().Be("NASDAQ"); response?.Type.Should().Be("Common Stock"); response?.Values[0]?.Open.Should().Be(127.63990); response?.Values[0]?.High.Should().Be(127.93000); response?.Values[0]?.Low.Should().Be(127.63000); response?.Values[0]?.Close.Should().Be(127.79000); response?.Values[0]?.Volume.Should().Be(1691294); }
public FinanceService(IConfiguration configuration, HttpClient httpClient) { _configuration = configuration; _twelveDataApiKey = configuration.GetSection("FischBot:twelveDataApiKey").Value; _twelveDataClient = new TwelveDataClient(_twelveDataApiKey, httpClient); _httpClient = httpClient; }
public async void GetQuote_NullHttpClient_Test() { // Arrange TwelveDataClient twelveDataClient = new TwelveDataClient("TEST", null); // Act var response = await twelveDataClient.GetQuoteAsync("TEST"); // Assert response?.ResponseStatus.Should().Be(Enums.TwelveDataClientResponseStatus.TwelveDataSharpError); }
public async void GetQuote_BadApiKey_Test() { // Arrange var mockHttp = new MockHttpMessageHandler(); mockHttp .When("https://api.twelvedata.com/*") .Respond("application/json", "{\"code\":401,\"message\":\"**apikey** parameter is incorrect or not specified. You can get your free API Key instantly following this link: https://twelvedata.com/apikey. If you believe that everything is correct, you can email us at [email protected]\",\"status\":\"error\"}"); TwelveDataClient twelveDataClient = new TwelveDataClient("TEST", mockHttp.ToHttpClient()); // Act var response = await twelveDataClient.GetRealTimePriceAsync("TEST"); // Assert response?.ResponseStatus.Should().Be(Enums.TwelveDataClientResponseStatus.TwelveDataApiError); }
public async void GetQuote_InvalidSymbol_Test() { // Arrange var mockHttp = new MockHttpMessageHandler(); mockHttp .When("https://api.twelvedata.com/*") .Respond("application/json", "{\"code\":400,\"message\":\"**symbol** not found: FAKE. Please specify it correctly according to API Documentation.\",\"status\":\"error\",\"meta\":{\"symbol\":\"FAKE\",\"interval\":\"\",\"exchange\":\"\"}}"); TwelveDataClient twelveDataClient = new TwelveDataClient("TEST", mockHttp.ToHttpClient()); // Act var response = await twelveDataClient.GetQuoteAsync("TEST"); // Assert response?.ResponseStatus.Should().Be(Enums.TwelveDataClientResponseStatus.TwelveDataApiError); }
public async void GetRealTimePrice_Success_Test() { // Arrange var mockHttp = new MockHttpMessageHandler(); mockHttp .When("https://api.twelvedata.com/*") .Respond("application/json", "{\"price\":\"127.79000\"}"); TwelveDataClient twelveDataClient = new TwelveDataClient("TEST", mockHttp.ToHttpClient()); // Act var response = await twelveDataClient.GetRealTimePriceAsync("TEST"); // Assert response?.ResponseStatus.Should().Be(Enums.TwelveDataClientResponseStatus.Ok); response?.ResponseMessage.Should().Be("RESPONSE_OK"); response?.Price.Should().Be(127.7900); }
public async void GetQuote_Success_Test() { // Arrange var mockHttp = new MockHttpMessageHandler(); mockHttp .When("https://api.twelvedata.com/*") .Respond("application/json", "{\"symbol\":\"AAPL\",\"name\":\"Apple Inc\",\"exchange\":\"NASDAQ\",\"currency\":\"USD\",\"datetime\":\"2021-03-01\",\"open\":\"123.75000\",\"high\":\"127.93000\",\"low\":\"122.79000\",\"close\":\"127.79000\",\"volume\":\"116307692\",\"previous_close\":\"121.26000\",\"change\":\"6.53000\",\"percent_change\":\"5.38512\",\"average_volume\":\"115516862\",\"fifty_two_week\":{\"low\":\"53.15250\",\"high\":\"145.08000\",\"low_change\":\"74.63750\",\"high_change\":\"-17.29000\",\"low_change_percent\":\"140.42143\",\"high_change_percent\":\"-11.91756\",\"range\":\"53.152500 - 145.080002\"}}"); TwelveDataClient twelveDataClient = new TwelveDataClient("TEST", mockHttp.ToHttpClient()); // Act var response = await twelveDataClient.GetQuoteAsync("TEST"); // Assert response?.ResponseStatus.Should().Be(Enums.TwelveDataClientResponseStatus.Ok); response?.ResponseMessage.Should().Be("RESPONSE_OK"); response?.Symbol.Should().Be("AAPL"); response?.Open.Should().Be(123.75000); response?.Datetime.Should().Be(new DateTime(2021, 3, 1)); response?.Exchange.Should().Be("NASDAQ"); response?.Currency.Should().Be("USD"); response?.Datetime.Should().Be(new DateTime(2021, 3, 1)); response?.Open.Should().Be(123.75000); response?.High.Should().Be(127.93000); response?.Low.Should().Be(122.79000); response?.Close.Should().Be(127.79000); response?.PreviousClose.Should().Be(121.26000); response?.Change.Should().Be(6.53000); response?.Volume.Should().Be(116307692); response?.Change.Should().Be(6.53000); response?.PercentChange.Should().Be(5.38512); response?.AverageVolume.Should().Be(115516862); response?.FiftyTwoWeekHigh.Should().Be(145.08000); response?.FiftyTwoWeekLow.Should().Be(53.15250); response?.FiftyTwoWeekHighChange.Should().Be(-17.29000); response?.FiftyTwoWeekLowChange.Should().Be(74.63750); response?.FiftyTwoWeekHighChangePercent.Should().Be(-11.91756); response?.FiftyTwoWeekLowChangePercent.Should().Be(140.42143); response?.FiftyTwoWeekRange.Should().Be("53.152500 - 145.080002"); }