/// <summary>
        /// Call api/converter/convert endpoint to convert a number to its textual representation
        /// </summary>
        /// <param name="detail">A number detail view model</param>
        /// <returns>A processed number detail</returns>
        public NumberDetail ConvertNumebrDetail(NumberDetailViewModel detail)
        {
            NumberDetail        result   = null;
            HttpResponseMessage response = null;

            try
            {
                using (HttpClient client = new HttpClient())
                {
                    ConfigureHttpClient(client);

                    response = client.PostAsync("api/converter/convert", detail, new JsonMediaTypeFormatter()).Result;

                    response.EnsureSuccessStatusCode();

                    result = response.Content.ReadAsAsync <NumberDetail>().Result;
                }
            }
            catch (Exception)
            {
                throw new ApplicationException(response.ReasonPhrase);
            }

            return(result);
        }
        public void ConvertNumebrDetail_NegativeValue_ShoudReturnException()
        {
            var process = new ConverterProcess();
            var detail  = new NumberDetailViewModel
            {
                Name   = "Behnam Karimi",
                Number = -101.11m
            };

            Assert.Throws <ApplicationException>(() => process.ConvertNumebrDetail(detail));
        }
Exemple #3
0
        public void IndexPost_NegativeNumber_ErrorReturns()
        {
            var controller = new HomeController();
            var detail     = new NumberDetailViewModel
            {
                Name   = "Behnam",
                Number = -201.10m
            };

            var view = controller.Index(detail) as ViewResult;

            Assert.AreEqual("Index", view.ViewName);
            Assert.True(view.ViewData.ModelState.Keys.Contains("Number"));
            Assert.AreEqual("Unable to process the request.", view.ViewData.ModelState["Number"].Errors[0].ErrorMessage);
        }
Exemple #4
0
        public ActionResult Index(NumberDetailViewModel numberDetailViewModel)
        {
            try
            {
                ConverterProcess process = new ConverterProcess();

                // calls UI process to converts the number
                NumberDetail result = process.ConvertNumebrDetail(numberDetailViewModel);

                return(View("Result", result));
            }
            catch (Exception)
            {
                ModelState.AddModelError("Number", "Unable to process the request.");
                return(View("Index"));
            }
        }
        public void ConvertNumebrDetailTest()
        {
            var process = new ConverterProcess();
            var detail  = new NumberDetailViewModel
            {
                Name   = "Behnam Karimi",
                Number = 101.11m
            };

            var result = process.ConvertNumebrDetail(detail);

            TestContext.Out.WriteLine(result.ToString());

            Assert.IsNotNull(result);
            Assert.AreEqual(detail.Name, result.Name);
            Assert.AreEqual(detail.Number, result.Number);
            Assert.AreEqual("one hundred and one dollars and eleven cents", result.ConvertedNumber);
            Assert.AreEqual(DateTime.UtcNow.Date, result.DateCreated.Date);
            Assert.AreNotEqual(Guid.Empty, result.Id);
        }
Exemple #6
0
        public void IndexPostTest()
        {
            var controller = new HomeController();
            var detail     = new NumberDetailViewModel
            {
                Name   = "Behnam",
                Number = 201.10m
            };

            var view   = controller.Index(detail) as ViewResult;
            var result = (NumberDetail)view.ViewData.Model;

            TestContext.Out.WriteLine(result.ToString());

            Assert.AreEqual("Result", view.ViewName);
            Assert.IsNotNull(result);
            Assert.AreEqual(detail.Name, result.Name);
            Assert.AreEqual(detail.Number, result.Number);
            Assert.AreEqual("two hundred and one dollars and ten cents", result.ConvertedNumber);
            Assert.AreEqual(DateTime.UtcNow.Date, result.DateCreated.Date);
            Assert.AreNotEqual(Guid.Empty, result.Id);
        }