Example #1
0
        public async Task GetHistoryRatesForGivenPeriodsAsync_WhenDateIsInFuture_ShouldReturnBadRequest()
        {
            var loggerMock = new Mock <ILogger <ExchangeRatesController> >();
            var exchangeRatesManagement = new ExchangeRatesManagement(new Mock <HttpClient>().Object);

            var sut = new ExchangeRatesController(loggerMock.Object, exchangeRatesManagement);

            var result = await sut.GetHistoryRatesForGivenPeriodsAsync(new HistoryRatesRequest(new [] { DateTime.Now.AddDays(1) }, "EUR", "EUR"));

            Assert.IsType <BadRequestObjectResult>(result);
        }
Example #2
0
        public async Task GetHistoryRatesForGivenPeriodsAsync_WhenTargetCurrencyIsInvalid_ShouldReturnBadRequest(string targetCurrency)
        {
            var loggerMock = new Mock <ILogger <ExchangeRatesController> >();
            var exchangeRatesManagement = new ExchangeRatesManagement(new Mock <HttpClient>().Object);

            var sut = new ExchangeRatesController(loggerMock.Object, exchangeRatesManagement);

            var result = await sut.GetHistoryRatesForGivenPeriodsAsync(new HistoryRatesRequest(new [] { DateTime.Now }, "EUR", targetCurrency ));

            Assert.IsType <BadRequestObjectResult>(result);
        }
        public async Task ExchangeRates_SEK_To_NOK_Returns_0970839476467_AsAverage()
        {
            var sut = new ExchangeRatesManagement(new HttpClient());

            var result = await sut.GetRatesForGivenPeriodsAsync(
                new HistoryRatesRequest(
                    new[]
            {
                new DateTime(2018, 2, 1),
                new DateTime(2018, 2, 15),
                new DateTime(2018, 3, 1)
            }, "SEK", "NOK"));

            Assert.Equal(0.970839476467m, result.AverageRate, precision: 12);
        }
        public async Task ExchangeRates_WhenDateBefore_1999_01_04_ShouldThrowDateException()
        {
            var sut = new ExchangeRatesManagement(new HttpClient());

            await Assert.ThrowsAsync <DateException>(async() =>
                                                     await sut.GetRatesForGivenPeriodsAsync(
                                                         new HistoryRatesRequest(
                                                             new[]
            {
                new DateTime(1998, 2, 1),
                new DateTime(2018, 2, 15),
                new DateTime(2018, 3, 1)
            },
                                                             "SEK",
                                                             "NOK")));
        }
        public async Task ExchangeRates_WhenBaseCurrencyAndTargetCurrencySame_ShouldThrowCurrencyException()
        {
            var sut = new ExchangeRatesManagement(new HttpClient());

            await Assert.ThrowsAsync <CurrencyException>(async() =>
                                                         await sut.GetRatesForGivenPeriodsAsync(
                                                             new HistoryRatesRequest(
                                                                 new[]
            {
                new DateTime(2018, 2, 1),
                new DateTime(2018, 2, 15),
                new DateTime(2018, 3, 1)
            },
                                                                 "NOK",
                                                                 "NOK")));
        }
        public ExchangeRatesManagementTest()
        {
            var httpClientMock = new Mock <HttpClient>();

            _sut = new ExchangeRatesManagement(httpClientMock.Object);
        }