Beispiel #1
0
        public void Convert_AmountIsZero_ShouldReturnZero()
        {
            //Arrange
            var currencyFrom         = new Currency("dkk");
            var currencyTo           = new Currency("eur");
            var moneyExchangeRequest = new MoneyExchangeRequest(currencyFrom, currencyTo, 0);

            //Act
            var result = _currencyCalculator.Convert(moneyExchangeRequest);

            //Assert
            result.ShouldBe(0);
        }
        public void CreateMoneyExchangeRequest_ValidData_ShouldSucceed(int amount)
        {
            //Arrange
            var currencyFrom = GetValidCurrency();
            var currencyTo   = GetValidCurrency();

            //Act
            var moneyExchangeRequest = new MoneyExchangeRequest(currencyFrom, currencyTo, amount);

            //Assert
            moneyExchangeRequest.CurrencyFrom.Iso.ShouldBe(currencyFrom.Iso);
            moneyExchangeRequest.CurrencyTo.Iso.ShouldBe(currencyTo.Iso);
            moneyExchangeRequest.Amount.ShouldBe(amount);
        }
        public void CreateFromUserInput_InputIsValid_ShouldSucceed(string userInput)
        {
            //Arrange
            var splitUserInput       = userInput.Split(' ');
            var expectedCurrencyFrom = splitUserInput[0].Split('/')[0].ToUpperInvariant();
            var expectedCurrencyTo   = splitUserInput[0].Split('/')[1].ToUpperInvariant();
            var expectedAmount       = decimal.Parse(splitUserInput[1]);

            //Act
            var moneyExchangeRequest = MoneyExchangeRequest.CreateFromUserInput(userInput);

            //Assert
            moneyExchangeRequest.CurrencyFrom.Iso.ShouldBe(expectedCurrencyFrom);
            moneyExchangeRequest.CurrencyTo.Iso.ShouldBe(expectedCurrencyTo);
            moneyExchangeRequest.Amount.ShouldBe(expectedAmount);
        }
Beispiel #4
0
        public decimal Convert(MoneyExchangeRequest moneyExchangeRequest)
        {
            if (moneyExchangeRequest is null)
            {
                throw new DomainException("MoneyExchangeRequest cannot be null");
            }

            if (moneyExchangeRequest.Amount == 0)
            {
                return(0);
            }

            var exchangeRate = _xrProvider
                               .GetExchangeRate(moneyExchangeRequest.CurrencyFrom, moneyExchangeRequest.CurrencyTo);
            var convertedAmount = decimal.Multiply(moneyExchangeRequest.Amount, exchangeRate);

            return(convertedAmount);
        }
Beispiel #5
0
        public void Convert_ShouldSucceed()
        {
            //Arrange
            var currencyFrom         = new Currency("dkk");
            var currencyTo           = new Currency("eur");
            var amount               = 19.51m;
            var moneyExchangeRequest = new MoneyExchangeRequest(currencyFrom, currencyTo, amount);
            var exchangeRate         = 2.57m;
            var expectedResult       = decimal.Multiply(amount, exchangeRate);

            _xrProviderMock.Setup(x => x.GetExchangeRate(currencyFrom, currencyTo))
            .Returns(exchangeRate);

            //Act
            var result = _currencyCalculator.Convert(moneyExchangeRequest);

            //Assert
            result.ShouldBe(expectedResult);
        }
Beispiel #6
0
        static void Main(string[] args)
        {
            var    diContainer = new DIContainer();
            var    calculator  = diContainer.GetService <ICurrencyCalculator>();
            string userInput   = string.Empty;

#if DEBUG
            Console.WriteLine("Usage: <currencyFrom>/<currencyTo> <amount to exchange>");
            userInput = Console.ReadLine();
#else
            if (!args.Any() || args.Length != 2)
            {
                Console.WriteLine("Usage: Exchange <currencyFrom>/<currencyTo> <amount to exchange>");
                return;
            }
            userInput = $"{args[0]} {args[1]}";
#endif
            try
            {
                var moneyExchangeRequest = MoneyExchangeRequest.CreateFromUserInput(userInput);

                var convertedAmount = calculator.Convert(moneyExchangeRequest);

                Console.WriteLine($"{convertedAmount} {moneyExchangeRequest.CurrencyTo.Iso}");
            }
            catch (DomainException ex)
            {
                Console.WriteLine(ex.Message);
                return;
            }
            catch (Exception)
            {
                Console.WriteLine("Something went wrong.");
                return;
            }
        }
 public void CreateFromUserInput_InputIsInvalid_ShouldThrowException(string userInput)
 {
     //Act && Assert
     Should.Throw <DomainException>(() => MoneyExchangeRequest.CreateFromUserInput(userInput));
 }