public async Task GetRateAsync_ArgumentsNullOrEmpty(string from, string to)
        {
            var logger             = TestHelper.CreateDefaultLogger();
            var httpMessageHandler = new Mock <HttpMessageHandler>();
            var httpClient         = new HttpClient(httpMessageHandler.Object);
            var exchageRateApi     = new ExchangeRateApi(httpClient, logger.Object);

            var rate = await exchageRateApi.GetRateAsync(from, to);

            Assert.IsNull(rate);
        }
        public async Task GetRateAsync_ArgumentsEquals()
        {
            var logger             = TestHelper.CreateDefaultLogger();
            var httpMessageHandler = new Mock <HttpMessageHandler>();
            var httpClient         = new HttpClient(httpMessageHandler.Object);
            var exchageRateApi     = new ExchangeRateApi(httpClient, logger.Object);

            var currency = EurCurrency;
            var rate     = await exchageRateApi.GetRateAsync(currency, currency);

            Assert.AreEqual(1m, rate);
        }
        public async Task GetRateAsync_ResponseSuccessJsonWithoutRate()
        {
            var logger   = TestHelper.CreateDefaultLogger();
            var response = new HttpResponseMessage()
            {
                StatusCode = HttpStatusCode.OK,
                Content    = new StringContent(@"{""result"": ""success""}"),
            };
            var httpMessageHandler = new Mock <HttpMessageHandler>();
            var httpClient         = new HttpClient(httpMessageHandler.Object);

            httpMessageHandler.Protected()
            .Setup <Task <HttpResponseMessage> >(
                "SendAsync",
                ItExpr.IsAny <HttpRequestMessage>(),
                ItExpr.IsAny <CancellationToken>())
            .ReturnsAsync(response);
            var exchageRateApi = new ExchangeRateApi(httpClient, logger.Object);

            var rate = await exchageRateApi.GetRateAsync(EurCurrency, UsdCurrency);

            Assert.IsNull(rate);
        }