public void Call_ConvertCurrency_ShoulReturn_CurrencyInWords()
        {
            //Arrange
            var requestCurrencyModel = new RequestCurrencyModel
            {
                Name     = "Muhammad Zeeshan",
                Currency = new decimal(123.45)
            };

            var wordsCurrencyModel = new ResponseCurrencyModel
            {
                Name            = "Muhammad Zeeshan",
                CurrencyInWords = "ONE HUNDRED AND TWENTY-THREE DOLLARS AND FORTY-FIVE CENTS"
            };

            _service.ConvertToWords(Arg.Any <RequestCurrencyModel>()).Returns(wordsCurrencyModel);

            //Action
            var response = _controller.Post(requestCurrencyModel).ExecuteAsync(CancellationToken.None).Result;
            var result   = JsonConvert.DeserializeObject <ResponseCurrencyModel>(response.Content.ReadAsStringAsync().Result);

            //Assert
            Assert.AreEqual(response.StatusCode, HttpStatusCode.OK);
            Assert.AreEqual(result.Name, "Muhammad Zeeshan");
            Assert.AreEqual(result.CurrencyInWords, "ONE HUNDRED AND TWENTY-THREE DOLLARS AND FORTY-FIVE CENTS");
        }
예제 #2
0
        public void ConvertToWords_GreaterThanMillion_ShouldReturn_ArgumentOfRangeException()
        {
            //Arrange
            var model = new RequestCurrencyModel
            {
                Name     = "Muhammad Zeeshan",
                Currency = new decimal(9999999.99 + 1)
            };

            //Action
            //Assert
            Assert.Throws <ArgumentOutOfRangeException>(() => _service.ConvertToWords(model));
        }
예제 #3
0
        public void ConvertToWords_MaxValue_ShouldReturn_ValidText()
        {
            //Arrange
            var model = new RequestCurrencyModel
            {
                Name     = "Muhammad Zeeshan",
                Currency = new decimal(9999999.99)
            };

            //Action
            var result = _service.ConvertToWords(model);

            //Assert
            Assert.AreEqual(result.CurrencyInWords, "NINE MILLION AND NINE HUNDRED AND NINETY-NINE THOUSAND AND NINE HUNDRED AND NINETY-NINE DOLLARS AND NINETY-NINE CENTS");
        }
예제 #4
0
        public void ConvertToWords_Million_ShouldReturn_ValidText()
        {
            //Arrange
            var model = new RequestCurrencyModel
            {
                Name     = "Muhammad Zeeshan",
                Currency = new decimal(9000000)
            };

            //Action
            var result = _service.ConvertToWords(model);

            //Assert
            Assert.AreEqual(result.CurrencyInWords, "NINE MILLION DOLLARS");
        }
예제 #5
0
        public void ConvertToWords_OnlyDollar_ShouldReturn_ValidText()
        {
            //Arrange
            var model = new RequestCurrencyModel
            {
                Name     = "Muhammad Zeeshan",
                Currency = new decimal(100)
            };

            //Action
            var result = _service.ConvertToWords(model);

            //Assert
            Assert.AreEqual(result.CurrencyInWords, "ONE HUNDRED DOLLARS");
        }
        public ResponseCurrencyModel ConvertToWords(RequestCurrencyModel model)
        {
            //Validate

            //Parse Dollars and Cents
            var parsedCurrency = _currencyParser.Parse(model.Currency);

            //Convert Dollars to words
            var dollarsInWords = NumberToWords(parsedCurrency.Dollars);

            //Convert Cents to words
            var centsInWords = NumberToWords(parsedCurrency.Cents);

            //Foramt Dollars & Cents
            var currencyInWords = _currencyFormatter.Format(dollarsInWords, centsInWords);

            //retrun;
            return(new ResponseCurrencyModel
            {
                Name = model.Name,
                CurrencyInWords = currencyInWords
            });
        }
 public IHttpActionResult Post(RequestCurrencyModel model)
 {
     return(Ok(_numberToWordsService.ConvertToWords(model)));
 }