public async Task Post_ReturnsNewlyCreatedTodoItems() { // Arrange var todo = FakeDatasHelper.GetTestTodos().FirstOrDefault(); var mockRepo = new Mock <ITodoItemRepository>(); mockRepo.Setup(repo => repo.AddAsync(todo)) .Returns(Task.CompletedTask) .Verifiable(); var controller = new TemporaryController(mockRepo.Object); // Act var result = await controller.Post(new TemporaryController.NewTodoModel() { Name = "test" }); // Assert var okResult = Assert.IsType <OkObjectResult>(result); var returnTodo = Assert.IsType <TodoItem>(okResult.Value); Assert.False(returnTodo.IsComplete); Assert.Equal("test", returnTodo.Name); Assert.Equal(DateTimeOffset.Now.Day, returnTodo.ModifyTime.Day); Assert.Equal(DateTimeOffset.Now.Day, returnTodo.CreateTime.Day); Assert.Empty(returnTodo.Steps); }
public async Task IndexPost_ReturnsARedirectAndAddsTodo_WhenModelStateIsValid() { // Arrange var mockRepo = new Mock <ITodoItemRepository>(); mockRepo.Setup(repo => repo.AddAsync(It.IsAny <TodoItem>())) .Returns(Task.CompletedTask) .Verifiable(); var controller = new TemporaryController(mockRepo.Object); var newTodo = new TemporaryController.NewTodoModel() { Name = "测试" }; // Act var result = await controller.Index(newTodo); // Assert var redirectToActionResult = Assert.IsType <RedirectToActionResult>(result); Assert.Null(redirectToActionResult.ControllerName); Assert.Equal("Index", redirectToActionResult.ActionName); mockRepo.Verify(); }
public async Task Post_ReturnsBadReqeust_GivenInvalidModel() { // Arrange var mockRepo = new Mock <ITodoItemRepository>(); var controller = new TemporaryController(mockRepo.Object); controller.ModelState.AddModelError("error", "some error"); // Act var result = await controller.Post(model : null); // Assert Assert.IsType <BadRequestObjectResult>(result); }
public async Task IndexById_ReturnsARedirectToIndexHomeWhenIdIsNull() { // Arrange var controller = new TemporaryController(todoItemRepository: null); // Act var result = await controller.IndexById(id : null); // Assert var redirectToActionResult = Assert.IsType <RedirectToActionResult>(result); Assert.Equal("Home", redirectToActionResult.ControllerName); Assert.Equal("Index", redirectToActionResult.ActionName); }
public async Task GetTodoItems_ReturnsHttpNotFound_ForInvalidTodoItem() { // Arrange int todoId = 111; var mockRepo = new Mock <ITodoItemRepository>(); mockRepo.Setup(repo => repo.GetAsync(todoId)) .ReturnsAsync((TodoItem)null); var controller = new TemporaryController(mockRepo.Object); // Act var result = await controller.Get(todoId); // Assert var notFoundObjectResult = Assert.IsType <NotFoundObjectResult>(result); Assert.Equal(todoId, notFoundObjectResult.Value); }
public async Task Index_ReturnsAViewResult_WithAListOfTodoItems() { // Arrange var mockRepo = new Mock <ITodoItemRepository>(); mockRepo.Setup(repo => repo.ListAsync()) .ReturnsAsync(FakeDatasHelper.GetTestTodos()); var controller = new TemporaryController(mockRepo.Object); // Act var result = await controller.Index(); // Assert var viewResult = Assert.IsType <ViewResult>(result); var model = Assert.IsAssignableFrom <IEnumerable <TodoItemViewModel> >(viewResult.ViewData.Model); Assert.Equal(2, model.Count()); }
public async Task IndexById_ReturnsContentWithTodoItemsNotFound_WhenTodoItemNotFound() { // Arrange int todoId = 1; var mockRepo = new Mock <ITodoItemRepository>(); mockRepo.Setup(repo => repo.GetAsync(todoId)) .ReturnsAsync((TodoItem)null); var controller = new TemporaryController(mockRepo.Object); // Act var result = await controller.IndexById(todoId); // Assert var contentResult = Assert.IsType <ContentResult>(result); Assert.Equal("Todo items not found", contentResult.Content); }
public async Task IndexPost_ReturnsARedirectAndAddsTodo_WhenModelStateIsInValid() { // Arrange var mockRepo = new Mock <ITodoItemRepository>(); mockRepo.Setup(repo => repo.ListAsync()) .ReturnsAsync(FakeDatasHelper.GetTestTodos()); var controller = new TemporaryController(mockRepo.Object); controller.ModelState.AddModelError("Name", "Required"); var newTodo = new TemporaryController.NewTodoModel(); // Act var result = await controller.Index(newTodo); // Assert var badReqeustResult = Assert.IsType <BadRequestObjectResult>(result); Assert.IsType <SerializableError>(badReqeustResult.Value); }
public async Task GetTodoItems_ReturnsTodoItems() { // Arrange int todoId = 1; var mockRepo = new Mock <ITodoItemRepository>(); mockRepo.Setup(repo => repo.GetAsync(todoId)) .ReturnsAsync(FakeDatasHelper.GetTestTodos().FirstOrDefault(t => t.ID == todoId)); var controller = new TemporaryController(mockRepo.Object); // Act var result = await controller.Get(todoId); // Assert var okResult = Assert.IsType <OkObjectResult>(result); var returnValue = Assert.IsType <TodoItem>(okResult.Value); Assert.False(returnValue.IsComplete); Assert.Equal("测试1", returnValue.Name); Assert.Equal(DateTimeOffset.Now.Day, returnValue.ModifyTime.Day); Assert.Equal(todoId, returnValue.ID); Assert.Equal(2, returnValue.Steps.Count); }
public async Task IndexById_ReturnsViewResult_WithTodoItemsVideModel() { // Arrange var todoId = 1; var mockRepo = new Mock <ITodoItemRepository>(); mockRepo.Setup(repo => repo.GetAsync(todoId)) .ReturnsAsync(FakeDatasHelper.GetTestTodos().FirstOrDefault(t => t.ID == todoId)); var controller = new TemporaryController(mockRepo.Object); // Act var result = await controller.IndexById(todoId); // Assert var viewResult = Assert.IsType <ViewResult>(result); var model = Assert.IsType <List <TodoItemViewModel> >(viewResult.ViewData.Model); Assert.False(model[0].IsComplete); Assert.Equal("测试1", model[0].Name); Assert.Equal(DateTimeOffset.Now.Day, model[0].ModifyTime.Day); Assert.Equal(todoId, model[0].Id); Assert.Equal(2, model[0].StepCount); }