public async Task <ActionResult> Index(MoneyConvertorModel model) { if (!ModelState.IsValid) { return(View(model)); } try { var request = _appSettings.WebApiUri; var client = _clientFactory.CreateClient(); client.BaseAddress = new Uri(request); var result = await client.PostAsJsonAsync("api/MoneyConvertor", model); if (result.IsSuccessStatusCode) { model = await result.Content.ReadAsAsync <MoneyConvertorModel>(); return(RedirectToAction("Result", model)); } else { ModelState.AddModelError(string.Empty, "An unexpected errr happened."); return(View(model)); } } catch (Exception exception) { //Log the exception via sending the telemetry data to Azure Application Insight ModelState.AddModelError(string.Empty, "An unexpected errr happened."); return(View(model)); } }
public IActionResult MoneyConvertor(MoneyConvertorModel model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } BussinessLogic.BuildMoneyString(model); return(Ok(model)); }
public void Result_Always_ShouldReturnResultView() { //Arrange var model = new MoneyConvertorModel(); var ConvertController = new HomeController(getMockHttpClientFactory().Object, getMockIOptionsSnapshot().Object); //Act ActionResult actionResult = ConvertController.Result(model); //Assert Assert.AreEqual((actionResult as ViewResult)?.ViewName, "Result"); }
public void Result_Always_ShouldReturnView() { //Arrange var model = new MoneyConvertorModel(); var ConvertController = new HomeController(getMockHttpClientFactory().Object, getMockIOptionsSnapshot().Object); //Act ActionResult actionResult = ConvertController.Result(model); //Assert Assert.IsInstanceOf <ViewResult>(actionResult); }
public void MoneyConvertor_WithValidModel_ShouldReturnOkObjectResult() { //Arrange var mockUrlLogic = new Mock <IMoneyConvertor>(); var controller = new MoneyConvertorController(mockUrlLogic.Object); var model = new MoneyConvertorModel(); //Act IActionResult actionResult = controller.MoneyConvertor(model); //Assert Assert.IsInstanceOf <OkObjectResult>(actionResult); }
public void BuildMoneyString_NotNull_ShouldInitializeMoneyString() { //Arrange var sut = new DollarConvertor(); var model = new MoneyConvertorModel() { Money = 0m }; Assert.IsNull(model.MoneyString); //Act sut.BuildMoneyString(model); //Assert Assert.NotNull(model.MoneyString); }
public void MoneyConvertor_WithInvalidModel_ShouldReturnBadRequestObjectResult() { //Arrange var mockUrlLogic = new Mock <IMoneyConvertor>(); var controller = new MoneyConvertorController(mockUrlLogic.Object); controller.ModelState.AddModelError("", ""); var model = new MoneyConvertorModel() { Money = 1 }; //Act IActionResult actionResult = controller.MoneyConvertor(model); //Assert Assert.IsInstanceOf <BadRequestObjectResult>(actionResult); }
public void MoneyConvertor_WithValidModel_ShouldCallLogic() { //Arrange var mockUrlLogic = new Mock <IMoneyConvertor>(); var controller = new MoneyConvertorController(mockUrlLogic.Object); var model = new MoneyConvertorModel() { Money = 1 }; //Act IActionResult actionResult = controller.MoneyConvertor(model); //Assert mockUrlLogic.Verify( x => x.BuildMoneyString(It.IsAny <MoneyConvertorModel>()), "A valid model should call the logic"); }
public void MoneyConvertor_WithInvalidModel_ShouldNotCallLogic() { //Arrange var mockUrlLogic = new Mock <IMoneyConvertor>(); var controller = new MoneyConvertorController(mockUrlLogic.Object); controller.ModelState.AddModelError("", ""); var model = new MoneyConvertorModel() { Money = 1 }; //Act IActionResult actionResult = controller.MoneyConvertor(model); //Assert mockUrlLogic.Verify( x => x.BuildMoneyString(It.IsAny <MoneyConvertorModel>()), Times.Never, "An Invalid model should not make call to logic"); }
public ActionResult Result(MoneyConvertorModel model) { return(View("Result", model)); }
public void BuildMoneyString(MoneyConvertorModel model) { model.MoneyString = new Dollar(model.Money).ConvertToString(); }