예제 #1
0
        public async Task GetLatestRateTests()
        {
            var client = Helpers.GetHttpClient(
                "{\"base\":\"EUR\",\"date\":\"2018-04-08\",\"rates\":{\"CAD\":1.565,\"CHF\":1.1798,\"GBP\":0.87295,\"SEK\":10.2983,\"EUR\":1.092,\"USD\":1.2234}}");
            var sut = new ExchangeRateService(client, _cache, _configurationMock.Object, _loggerMock.Object);

            // first run should get data from api mock
            var result = await sut.GetLatestRate("EUR,GBP");

            Assert.IsAssignableFrom <ExchangeRate>(result);
            Assert.Contains(result.Rates, i => i.Key == "CAD" && i.Value == (decimal)1.565);

            // second run should get data from cache
            client = Helpers.GetHttpClient("{}");
            sut    = new ExchangeRateService(client, _cache, _configurationMock.Object, _loggerMock.Object);
            result = await sut.GetLatestRate("EUR,GBP");

            Assert.IsAssignableFrom <ExchangeRate>(result);
            Assert.Contains(result.Rates, i => i.Key == "CAD" && i.Value == (decimal)1.565);
        }