public async Task CreateTodo_ValidData_ReturnsCreatedAtActionResult() { // Arrange var createdTodoDTO = new CreatedTodoDTO(); var expectedTodoDTO = new TodoDTO() { Id = 1, Name = "Some Todo", IsComplete = true }; var mockService = new Mock <ITodosService>(); mockService.Setup(ts => ts.CreateTodoAsync(createdTodoDTO)).ReturnsAsync(expectedTodoDTO); var controller = new TodosController(mockService.Object); // Action var result = await controller.CreateTodo(createdTodoDTO); // Assert Assert.NotNull(result); Assert.IsType <CreatedAtActionResult>(result.Result); Assert.IsType <TodoDTO>(((CreatedAtActionResult)result.Result).Value); var returnedResultTodo = (TodoDTO)((CreatedAtActionResult)result.Result).Value; Assert.Equal(expectedTodoDTO.Id, returnedResultTodo.Id); Assert.Equal(expectedTodoDTO.Name, returnedResultTodo.Name); Assert.Equal(expectedTodoDTO.IsComplete, returnedResultTodo.IsComplete); }
public async Task CreateTodo_PayloadMissing_ReturnsBadRequest() { // Arrange var mockService = new Mock <ITodosService>(); var controller = new TodosController(mockService.Object); // Action var result = await controller.CreateTodo(null); // Assert Assert.NotNull(result); Assert.IsType <BadRequestObjectResult>(result.Result); }
public async Task CreateTodo_ModelStateError_ReturnsBadRequest() { // Arrange var createdTodoDTO = new CreatedTodoDTO() { IsComplete = true }; var mockService = new Mock <ITodosService>(); var controller = new TodosController(mockService.Object); // Action controller.ModelState.AddModelError("createdTodoDTO.Name", "ModelState error"); var result = await controller.CreateTodo(createdTodoDTO); // Assert Assert.NotNull(result); Assert.IsType <BadRequestObjectResult>(result.Result); }