public void GetSupported_Currencies_CurrencyConverterProvider()
        {
            //Arrange
            IProvider provider = new CurrencyConverterProvider();

            //Act
            var currencies = provider.GetSupportedCurrencies().Result;

            //Assert
            Assert.NotNull(currencies);
        }
        public void Test_History_Conversion_CurrencyConverterProvider()
        {
            //Arrange
            IProvider provider     = new CurrencyConverterProvider();
            var       expectedRate = new Rate()
            {
                From  = "EUR",
                To    = "USD",
                Value = 1.199908m
            };
            var amountEur = 1.45m;
            //Act
            var rate      = provider.GetRate("EUR", "USD").Result;
            var amountUsd = rate.Convert(amountEur);

            //Assert
            Assert.Equal(amountUsd, amountEur * rate.Value);
        }
        public void Test_Current_Rate_CurrencyConverterProvider()
        {
            //Arrange
            IProvider provider     = new CurrencyConverterProvider();
            var       expectedRate = new Rate()
            {
                From  = "EUR",
                To    = "USD",
                Value = 1.199908m
            };

            //Act
            var rate = provider.GetRate("EUR", "USD").Result;

            //Assert
            Assert.NotEqual(1.199908m, rate.Value);
            Assert.NotEqual(0m, rate.Value);
        }
        public void Test_History_Rate_CurrencyConverterProvider()
        {
            //Arrange
            IProvider provider     = new CurrencyConverterProvider();
            DateTime  historyDate  = new DateTime(2017, 12, 31);
            var       expectedRate = new Rate()
            {
                From  = "EUR",
                To    = "USD",
                Date  = historyDate,
                Value = 1.199908m
            };

            //Act
            var rate = provider.GetRate("EUR", "USD", historyDate).Result;

            //Assert
            Assert.Equal(Math.Round(rate.Value, 6), expectedRate.Value);
            //rate.Should().BeEquivalentTo(expectedRate);
        }