示例#1
0
        /// <summary>
        /// <para>TodoItemのデータを更新します.</para>
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public TodoItemUpdateResultModel UpdateTodoItem(UpdateTodoItemModel model)
        {
            UpdateResult     result      = UpdateResult.Success;
            ValidationErrors validErrors = ValidationErrors.Create();

            try
            {
                var todoItem = DbContext.TodoItems.FirstOrDefault(e => e.Id == model.Id);
                if (todoItem == null)
                {
                    result = UpdateResult.NotExist;
                }
                else
                {
                    model.ReflectTodoItem(todoItem);
                    DbContext.SaveChanges();
                }
            }
            catch (TemplateValidationException e)
            {
                result      = UpdateResult.ValidError;
                validErrors = e.ValidErrors;
            }
            catch
            {
                result = UpdateResult.Failed;
            }
            return(TodoItemUpdateResultModel.Create(model, result, validErrors));
        }
示例#2
0
        public async Task <UpdateTodoItemResponseModel> UpdateAsync(Guid id, UpdateTodoItemModel updateTodoItemModel)
        {
            var todoList = await _todoListRepository.GetFirstAsync(tl => tl.Id == updateTodoItemModel.TodoListId);

            if (todoList == null)
            {
                throw new NotFoundException("List does not exist anymore");
            }

            var todoItem = await _todoItemRepository.GetFirstAsync(ti => ti.Id == id);

            if (todoItem == null)
            {
                throw new NotFoundException("Todo item does not exist anymore");
            }

            todoItem.Title  = updateTodoItemModel.Title;
            todoItem.Body   = updateTodoItemModel.Body;
            todoItem.IsDone = updateTodoItemModel.IsDone;

            return(new UpdateTodoItemResponseModel
            {
                Id = (await _todoItemRepository.UpdateAsync(todoItem)).Id
            });
        }
示例#3
0
    public async Task <UpdateTodoItemResponseModel> UpdateAsync(Guid id, UpdateTodoItemModel updateTodoItemModel,
                                                                CancellationToken cancellationToken = default)
    {
        var todoItem = await _todoItemRepository.GetFirstAsync(ti => ti.Id == id);

        _mapper.Map(updateTodoItemModel, todoItem);

        return(new UpdateTodoItemResponseModel
        {
            Id = (await _todoItemRepository.UpdateAsync(todoItem)).Id
        });
    }
示例#4
0
        // GET: TodoItems/Edit/5
        public async Task <IActionResult> Edit(Guid id)
        {
            var todoItem = await this.todoItemService.GetTodoItemAsync(id);

            if (todoItem == null)
            {
                return(NotFound());
            }

            var model = new UpdateTodoItemModel(todoItem.Id, todoItem.Description, todoItem.Title);

            return(View(model));
        }
示例#5
0
        public void Validator_Should_Have_Error_When_Body_Is_Empty()
        {
            // Arrange
            var updateTodoItemModel = new UpdateTodoItemModel {
                Body = string.Empty
            };

            // Act
            var result = _sut.TestValidate(updateTodoItemModel);

            // Assert
            result.ShouldHaveValidationErrorFor(uti => uti.Body);
        }
示例#6
0
        public async Task <IActionResult> Edit(Guid id, [Bind("Id, Description, Title")] UpdateTodoItemModel model)
        {
            if (id != model.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                await this.todoItemService.UpdateTodoItemAsync(id, model.Title, model.Description, this.User.GetUserId());
            }

            return(View(model));
        }
        public async Task <IActionResult> UpdateAsync(long id, [FromBody] UpdateTodoItemModel updateTodoItemModel)
        {
            var updateTodoItemInfo = new UpdateTodoItemInfo
            {
                Id         = id,
                IsComplete = updateTodoItemModel.IsComplete,
                Name       = updateTodoItemModel.Name,
                User       = User
            };

            await todoService.UpdateAsync(updateTodoItemInfo).ConfigureAwait(false);

            return(NoContent());
        }
示例#8
0
        public async Task <IActionResult> UpdateAsync(long id, [FromBody] UpdateTodoItemModel updateTodoItemModel)
        {
            var updateTodoItemInfo = new UpdateTodoItemInfo
            {
                Id         = id,
                IsComplete = updateTodoItemModel.IsComplete,
                Name       = updateTodoItemModel.Name,
                Owner      = User
            };

            await updateTodoItemFlow.ExecuteAsync(updateTodoItemInfo, User);

            return(NoContent());
        }
示例#9
0
        public async Task UpdateAsync_UsingNoJsonWebToken_ReturnsUnauthorizedHttpStatusCode()
        {
            // Arrange
            using HttpClient httpClient = webApplicationFactory.CreateClient();
            long?id = int.MaxValue;
            var  updateTodoItemModel = new UpdateTodoItemModel();

            // Act
            HttpResponseMessage response = await httpClient.PutAsJsonAsync($"{BaseUrl}/{id}", updateTodoItemModel);

            // Assert
            using (new AssertionScope())
            {
                response.IsSuccessStatusCode.Should().BeFalse(BecauseCurrentRequestHasNoJwt);
                response.StatusCode.Should().Be(HttpStatusCode.Unauthorized, BecauseCurrentRequestHasNoJwt);
            }
        }
        public async Task UpdateAsync_UsingNewlyCreatedTodoItem_MustSucceed()
        {
            // Arrange
            using HttpClient httpClient =
                      await testWebApplicationFactory.CreateClientWithJwtToken().ConfigureAwait(false);

            long?id = null;

            try
            {
                string name       = $"it--{nameof(UpdateAsync_UsingNewlyCreatedTodoItem_MustSucceed)}--{Guid.NewGuid():N}";
                bool   isComplete = DateTime.UtcNow.Ticks % 2 == 0;

                var newTodoItemInfo = new NewTodoItemModel
                {
                    Name       = name,
                    IsComplete = isComplete
                };

                HttpResponseMessage response =
                    await httpClient.PostAsJsonAsync(BaseUrl, newTodoItemInfo).ConfigureAwait(false);

                response.IsSuccessStatusCode.Should().BeTrue("a new entity has been created");
                id = await response.Content.ReadAsAsync <long>().ConfigureAwait(false);

                var updateTodoItemModel = new UpdateTodoItemModel
                {
                    IsComplete = !newTodoItemInfo.IsComplete,
                    Name       = $"CHANGED--{newTodoItemInfo.Name}"
                };

                // Act
                response = await httpClient.PutAsJsonAsync($"{BaseUrl}/{id}", updateTodoItemModel)
                           .ConfigureAwait(false);

                // Assert
                response.IsSuccessStatusCode.Should().BeTrue("an entity has been previously created");
                response.StatusCode.Should().Be(HttpStatusCode.NoContent);

                response = await httpClient.GetAsync($"{BaseUrl}/{id}").ConfigureAwait(false);

                response.IsSuccessStatusCode.Should().BeTrue("an entity has been previously update");
                response.StatusCode.Should().Be(HttpStatusCode.OK);

                TodoItemModel todoItemModel =
                    await response.Content.ReadAsAsync <TodoItemModel>().ConfigureAwait(false);

                todoItemModel.Should().NotBeNull("an entity has been previously created");
                todoItemModel.Id.Should().Be(id);
                todoItemModel.IsComplete.Should().Be(updateTodoItemModel.IsComplete.Value);
                todoItemModel.Name.Should().Be(updateTodoItemModel.Name);
            }
            finally
            {
                if (id.HasValue)
                {
                    HttpResponseMessage response =
                        await httpClient.DeleteAsync($"{BaseUrl}/{id}").ConfigureAwait(false);

                    response.IsSuccessStatusCode.Should().BeTrue("cleanup must succeed");
                }
            }
        }
示例#11
0
 public async Task <IActionResult> UpdateAsync(Guid id, UpdateTodoItemModel updateTodoItemModel)
 {
     return(Ok(ApiResult <UpdateTodoItemResponseModel> .Success(
                   await _todoItemService.UpdateAsync(id, updateTodoItemModel))));
 }