public async Task <ActionResult <TodoApiModel> > Put(string id, [FromBody] TodoRequestApiModel value) { var todo = new TodoEntity(new TodoId(id), value.Task); return(Result( await repository.Update(todo) )); }
public async Task <ActionResult <TodoApiModel> > Post([FromBody] TodoRequestApiModel value) { var todo = new TodoEntity(TodoId.NewId(), value.Task); return(Result( await repository.Create(todo) )); }
private async Task <TodoApiModel> TestUpdate(TodoApiClient client, TodoApiModel model, string task) { var updateRequest = new TodoRequestApiModel { Task = task }; var updatedTodo = await client.PutAsync(model.Id, updateRequest); await TestGet(client, updatedTodo); return(updatedTodo); }
private async Task <TodoApiModel> TestCreate(TodoApiClient client, string task) { var createRequest = new TodoRequestApiModel { Task = task }; var newTodo = await client.PostAsync(createRequest); await TestGet(client, newTodo); return(newTodo); }
public async Task Can_400_When_Posting_An_Invalid_Todo(string task) { var fixture = new TodoDataFixture(); var subject = new TodoController(fixture.Repository); var request = new TodoRequestApiModel { Task = task }; var result = (await subject.Post(request)).Result as BadRequestObjectResult; Assert.NotNull(result); Assert.Equal(400, result.StatusCode); Assert.Equal( "failed_validation", ((ApiErrorModel)result.Value).Code ); Assert.Equal( new[] { "Test Value" }, fixture.Repository.Values.Values.Select(x => x.Task).ToArray() ); }
public async Task Can_Post_A_Todo() { var fixture = new TodoDataFixture(); var subject = new TodoController(fixture.Repository); var request = new TodoRequestApiModel { Task = "Created Value" }; var result = (await subject.Post(request)).Result as OkObjectResult; Assert.NotNull(result); Assert.Equal(200, result.StatusCode); Assert.False(String.IsNullOrWhiteSpace(((TodoApiModel)result.Value).Id)); Assert.Equal( request.Task, ((TodoApiModel)result.Value).Task ); Assert.Equal( new[] { "Created Value", "Test Value" }, fixture.Repository.Values.Values.Select(x => x.Task).OrderBy(x => x).ToArray() ); }
public async Task Can_404_When_Putting_A_Missing_Todo() { var fixture = new TodoDataFixture(); var subject = new TodoController(fixture.Repository); var request = new TodoRequestApiModel { Task = "Updated value" }; var result = (await subject.Put("BADID", request)).Result as NotFoundObjectResult; Assert.NotNull(result); Assert.Equal(404, result.StatusCode); Assert.IsAssignableFrom <ApiErrorModel>(result.Value); Assert.Equal( "not_found", ((ApiErrorModel)result.Value).Code ); Assert.Equal( new[] { "Test Value" }, fixture.Repository.Values.Values.Select(x => x.Task).ToArray() ); }
public async Task Can_Put_A_Todo() { var fixture = new TodoDataFixture(); var subject = new TodoController(fixture.Repository); var request = new TodoRequestApiModel { Task = "Updated Value" }; var result = (await subject.Put("test-id", request)).Result as OkObjectResult; Assert.NotNull(result); Assert.Equal(200, result.StatusCode); Assert.Equal( TodoDataFixture.UpdatedTodoApiModel, (TodoApiModel)result.Value, new TodoApiModelComparer() ); Assert.Equal( new[] { "Updated Value" }, fixture.Repository.Values.Values.Select(x => x.Task).ToArray() ); }