コード例 #1
0
        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)
                       ));
        }
コード例 #2
0
        public async Task <ActionResult <TodoApiModel> > Post([FromBody] TodoRequestApiModel value)
        {
            var todo = new TodoEntity(TodoId.NewId(), value.Task);

            return(Result(
                       await repository.Create(todo)
                       ));
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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()
                );
        }
コード例 #6
0
        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()
                );
        }
コード例 #7
0
        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()
                );
        }
コード例 #8
0
        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()
                );
        }