public void ShouldEditTheLeaveTest() { var leave = new UpdateLeaveViewModel { FromDate = DateTime.Now.Date, ToDate = DateTime.Now.AddDays(2).Date, Reason = "No Reason", StatusId = (int)LeaveStatusEnum.Pending }; employeeManagerMock.Setup(x => x.GetEmployeeByUserNameAsync(It.IsAny <string>())) .Returns(Task.FromResult(new Employee() { Id = Guid.NewGuid().ToString() })); leaveManagerMock.Setup(x => x.UpdateLeave(It.IsAny <Leave>())) .Returns(1); var controller = new LeaveController(leaveManagerMock.Object, employeeManagerMock.Object); controller.ControllerContext.HttpContext = _contextMock.Object; var results = controller.EditLeave(leave); var redirectToActionResult = results as RedirectToActionResult; Assert.AreEqual("Index", redirectToActionResult.ActionName); }
public IActionResult EditLeave(UpdateLeaveViewModel model) { try { if (ModelState.IsValid) { //can only update leave that is pending if (model.StatusId != (int)LeaveStatusEnum.Pending) { ViewData["error"] = "You can only update Leave Request that is on Pending Status"; return(View(model)); } var leave = Mapper.Map <UpdateLeaveViewModel, Leave>(model); var results = leaveManager.UpdateLeave(leave); ViewData["results"] = "Leave updated successfully"; if (results > 0) { return(RedirectToAction("Index")); } ModelState.AddModelError("error", "Error when Updating the leave"); } return(View(model)); } catch (Exception ex) { ViewData["results"] = "Error: " + ex.Message; return(View(model)); } }