/// <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)); }
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); }
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); }
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); }