public async Task <int> Update(ChildUpdateDto updateDto) { string rootId = updateDto.Ids.First(); string childId = updateDto.Ids.Last(); var rootComment = await _bookRootCommentService.GetById(rootId); if (rootComment == null) { return(0); } var childComment = await FindChild(rootComment.Comments, childId); if (childComment == null) { return(0); } var children = childComment.Comments.Select(c => _mapper.Map <ChildDto, BookChildComment>(c)).ToList(); List <(string nestedArrayName, string itemId)> path = updateDto.Ids.Skip(1).Select(x => ("Comments", x)).ToList(); var updateResult = await _childCommentRepository.SetAsync( rootId, new BookChildComment() { Text = updateDto.Text, Comments = children }, path); return(Convert.ToInt32(updateResult.MatchedCount)); }
public void ChildDeleteValidator_ModelInvalid_ThrowsException() { var invalidDto = new ChildUpdateDto(); var result = _validator.TestValidate(invalidDto); result.ShouldHaveAnyValidationError(); }
public async Task <ActionResult <int> > Put([FromBody] ChildUpdateDto updateDto) { if (updateDto.OwnerId != _userResolverService.GetUserId()) { return(Forbid()); } int number = await _childBookCommentService.Update(updateDto); if (number == 0) { return(NotFound(number)); } return(Ok(number)); }
public void ChildDeleteValidator_ModelValid_DontThrowsException() { var validDto = new ChildUpdateDto() { Ids = new List <string>() { "5e9c9ee859231a63bc853bf0", "5e9c9ee859231a63bc853bf1" }, OwnerId = 1, Text = "Text" }; var result = _validator.TestValidate(validDto); result.ShouldNotHaveAnyValidationErrors(); }
public async Task PutCommentByUser_Unauthorised_ReturnsForbidResult() { ChildUpdateDto updateDto = new ChildUpdateDto() { Ids = new List <string>() { "5e9c9ee859231a63bc853bf0", "5e9c9ee859231a63bc853bf1" }, OwnerId = 1, Text = "Text" }; _mockChildBookCommentService.Setup(s => s.Update(updateDto)).ReturnsAsync(1); _mockUserResolverService.Setup(s => s.GetUserId()).Returns(2); var putResult = await _bookChildCommentsController.Put(updateDto); var forbidResult = putResult.Result as ForbidResult; forbidResult.Should().BeOfType <ForbidResult>(); }
public async Task UpdateComment_BookChildCommentExistsAndNot_ReturnsNumberOfUpdatedComments(int updateValue, string commentId, int expectedResult) { ChildUpdateDto updateDto = new ChildUpdateDto() { Ids = new List <string>() { "5e9c9ee859231a63bc853bf0", "5e9c9ee859231a63bc853bf1" }, }; List <(string, string)> path = new List <(string, string)>() { ("Comments", "5e9c9ee859231a63bc853bf1") }; _rootRepository.Setup(m => m.GetById(It.IsAny <string>())) .ReturnsAsync(new RootDto() { Comments = new List <ChildDto>() { new ChildDto() { Id = "5e9c9ee859231a63bc853bf1", Comments = new List <ChildDto>() }, } }); _childRepository .Setup(s => s.SetAsync( "5e9c9ee859231a63bc853bf0", It.IsAny <BookChildComment>(), path)) .ReturnsAsync(new UpdateResult.Acknowledged(updateValue, updateValue, commentId)); var result = await _bookChildCommentService.Update(updateDto); result.Should().Be(expectedResult); }
public async Task PutCommentByUser_NotExists_ReturnsNotFoundObjectResult() { ChildUpdateDto updateDto = new ChildUpdateDto() { Ids = new List <string>() { "5e9c9ee859231a63bc853bf0", "5e9c9ee859231a63bc853bf1" }, OwnerId = 1, Text = "Text" }; _mockChildBookCommentService.Setup(s => s.Update(updateDto)).ReturnsAsync(0); _mockUserResolverService.Setup(s => s.GetUserId()).Returns(1); var putResult = await _bookChildCommentsController.Put(updateDto); var notFoundObjectResult = putResult.Result as NotFoundObjectResult; notFoundObjectResult.Should().BeOfType <NotFoundObjectResult>(); int updatedNumber = Convert.ToInt32(notFoundObjectResult.Value); updatedNumber.Should().Be(0); }