public async Task AddItemPost_ShouldReturn_RedirectToActionIndex_IfModelIsValid() { // Arrange var fakeUser = new IdentityUser(); // Make the mockUserManager return a fake user mockUserManager .Setup(x => x.GetUserAsync(It.IsAny <ClaimsPrincipal>())) .Returns(Task.FromResult <IdentityUser>(fakeUser)); // Make the mockTodoItemService always succeed mockTodoItemService .Setup(x => x.AddItemAsync(It.IsAny <TodoItem>(), It.IsAny <IdentityUser>())) .Returns(Task.FromResult(true)); var controller = new TodoController(mockTodoItemService.Object, mockCategoryService.Object, mockUserManager.Object); var model = new TodoItemAddViewModel(); //Act var result = await controller.AddItem(model); var objectResult = result as RedirectToActionResult; // Assert Assert.NotNull(objectResult); Assert.Equal(nameof(TodoController.Index), objectResult.ActionName); }
public async Task AddItemPost_ShouldReturn_BadRequest_IfFailed() { // Arrange var fakeUser = new IdentityUser(); // Make the mockUserManager always return a fake user for GetUserAsync mockUserManager .Setup(x => x.GetUserAsync(It.IsAny <ClaimsPrincipal>())) .Returns(Task.FromResult <IdentityUser>(fakeUser)); // Make the mockTodoItemService always fails mockTodoItemService .Setup(x => x.AddItemAsync(It.IsAny <TodoItem>(), It.IsAny <IdentityUser>())) .Returns(Task.FromResult(false)); var controller = new TodoController(mockTodoItemService.Object, mockCategoryService.Object, mockUserManager.Object); var model = new TodoItemAddViewModel(); //Act var result = await controller.AddItem(model); var objectResult = result as BadRequestObjectResult; // Assert Assert.NotNull(objectResult); Assert.IsType <string>(objectResult.Value); }
public async Task <IActionResult> AddItem(TodoItemAddViewModel model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var currentUser = await _userManager.GetUserAsync(User); if (currentUser == null) { return(Challenge()); } var newItem = new TodoItem { Id = model.Id, Title = model.Title, DueAt = model.DueAt, Category = _categoryService.GetByIdAsync(model.CategoryId).Result }; var successful = await _todoItemService.AddItemAsync(newItem, currentUser); if (!successful) { return(BadRequest("Could not add item.")); } return(RedirectToAction("Index")); }
public async Task AddItemPost_ShouldReturn_ChallengeResult_IfUserIsUnauthorize() { // Arrange // Make the mockUserManager always return null for GetUserAsync mockUserManager .Setup(x => x.GetUserAsync(It.IsAny <ClaimsPrincipal>())) .Returns(Task.FromResult <IdentityUser>(null)); var controller = new TodoController(mockTodoItemService.Object, mockCategoryService.Object, mockUserManager.Object); var model = new TodoItemAddViewModel(); // Act var result = await controller.AddItem(model); // Assert Assert.IsType <ChallengeResult>(result); }
public async Task AddItemPost_ShouldReturn_BadRequest_IfModelIsInvalid() { // Arrange var controller = new TodoController(mockTodoItemService.Object, mockCategoryService.Object, mockUserManager.Object); var model = new TodoItemAddViewModel(); controller.ModelState.AddModelError("error", "testerror"); //Act var result = await controller.AddItem(model); var objectResult = result as BadRequestObjectResult; // Assert Assert.NotNull(objectResult); Assert.IsType <SerializableError>(objectResult.Value); }
public async Task <IActionResult> AddItem() { var currentUser = await _userManager.GetUserAsync(User); if (currentUser == null) { return(Challenge()); } var categories = await _categoryService.GetAsync(); // Put items into a model var model = new TodoItemAddViewModel() { Categories = categories.ToList() }; // Render view using the model return(View(model)); }