public async void AddComment_ReturnsNotFoundObjectResult_WhenThePostOrUserDoesntExist(bool doesTheUserExists, bool doesThePostExists)
        {
            //Arrange
            _mockPostService.Setup(Service => Service.CheckIfPostExists(It.IsAny <Guid>()))
            .Returns(doesThePostExists)
            .Verifiable();
            _mockUserService.Setup(Service => Service.CheckIfUserExists(It.IsAny <Guid>()))
            .ReturnsAsync(doesTheUserExists)
            .Verifiable();
            var controller = new PostCommentsController(_loggerMock.Object, _mockPostService.Object, _mockUserService.Object, _mockCommentService.Object);

            //Act
            var result = await controller.AddComment(ConstIds.ExampleUserId, ConstIds.ExamplePostId, _commentToAdd);

            //Assert
            var notFoundObjectResult = Assert.IsType <NotFoundObjectResult>(result.Result);

            Assert.Equal($"User: {ConstIds.ExampleUserId} or post {ConstIds.ExamplePostId} not found.", notFoundObjectResult.Value);
            _mockPostService.Verify();
            //if post doesnt exist the user will not be checked
            if (doesThePostExists)
            {
                _mockUserService.Verify();
            }
        }
        public async void AddComment_ReturnsCreatedAtRouteResult_WithPostCommentData()
        {
            //Arrange
            _mockPostService.Setup(Service => Service.CheckIfPostExists(It.IsAny <Guid>()))
            .Returns(true)
            .Verifiable();
            _mockUserService.Setup(Service => Service.CheckIfUserExists(It.IsAny <Guid>()))
            .ReturnsAsync(true)
            .Verifiable();

            var commentEntity = _mapper.Map <PostCommentDto>(_commentToAdd);

            commentEntity.Id = new Guid(ConstIds.ExampleCommentId);

            _mockCommentService.Setup(Service => Service.AddCommentAsync(It.IsAny <Guid>(), It.IsAny <PostCommentToAddDto>()))
            .ReturnsAsync(commentEntity)
            .Verifiable();

            var controller = new PostCommentsController(_loggerMock.Object, _mockPostService.Object, _mockUserService.Object, _mockCommentService.Object);

            //Act
            var result = await controller.AddComment(ConstIds.ExampleUserId, ConstIds.ExamplePostId, _commentToAdd);

            //Assert
            var redirectToActionResult = Assert.IsType <CreatedAtRouteResult>(result.Result);

            Assert.Equal(ConstIds.ExampleUserId, redirectToActionResult.RouteValues["userId"].ToString());
            //Assert.Equal(_commentToAdd.PostId.ToString(), redirectToActionResult.RouteValues["postId"].ToString());
            Assert.Equal(ConstIds.ExampleCommentId, redirectToActionResult.RouteValues["commentId"].ToString());
            Assert.Equal("GetComment", redirectToActionResult.RouteName);
            _mockCommentService.Verify();
            _mockPostService.Verify();
            _mockUserService.Verify();
        }
        public void GetComments_ReturnsOkObjectResult_WithListOfCommentsData()
        {
            //Arrange
            var comments  = GetTestPostData();
            var pagedList = PagedList <PostCommentDto> .Create(comments, _paginationsParams.PageNumber, _paginationsParams.PageSize, _paginationsParams.Skip);

            _mockPostService.Setup(Service => Service.CheckIfPostExists(It.IsAny <Guid>()))
            .Returns(true)
            .Verifiable();
            _mockCommentService.Setup(Service => Service.GetPostComments(It.IsAny <Guid>(), _paginationsParams))
            .Returns(pagedList)
            .Verifiable();

            var mockUrlHelper = new Mock <IUrlHelper>();

            mockUrlHelper
            .Setup(m => m.Link("GetMessagesWith", It.IsAny <object>()))
            .Returns("some url")
            .Verifiable();

            var controller = new PostCommentsController(_loggerMock.Object, _mockPostService.Object, _mockUserService.Object, _mockCommentService.Object)
            {
                Url = mockUrlHelper.Object
            };

            //Act
            var result = controller.GetComments(ConstIds.ExamplePostId, _paginationsParams);

            //Assert
            var actionResult = Assert.IsType <OkObjectResult>(result.Result);
            var model        = Assert.IsType <CollectionWithPaginationData <PostCommentDto> >(actionResult.Value);

            _mockCommentService.Verify();
            _mockPostService.Verify();
        }
예제 #4
0
        public async void PartiallyUpdateComment_ReturnsBadRequestObjectResult_WhenTheCommentIdIsInvalid()
        {
            //Arrange
            var controller = new PostCommentsController(_loggerMock.Object, _mockPostService.Object, _mockUserService.Object, _mockCommentService.Object);

            //Act
            var result = await controller.PartiallyUpdateComment(ConstIds.InvalidGuid, GetJsonPatchDocument());

            //Assert
            var badRequestObjectResult = Assert.IsType <BadRequestObjectResult>(result);

            Assert.Equal($"{ConstIds.InvalidGuid} is not valid guid.", badRequestObjectResult.Value);
        }
        public async void AddComment_ReturnsBadRequestObjectResult_WhenThePostOrUserIdIsInvalid(string userTestId, string postTestId)
        {
            //Arrange
            var controller = new PostCommentsController(_loggerMock.Object, _mockPostService.Object, _mockUserService.Object, _mockCommentService.Object);

            //Act
            var result = await controller.AddComment(userTestId, postTestId, _commentToAdd);

            //Assert
            var badRequestObjectResult = Assert.IsType <BadRequestObjectResult>(result.Result);

            Assert.Equal($"{userTestId} or {postTestId} is not valid guid.", badRequestObjectResult.Value);
        }
        public void GetComments_ReturnsBadRequestObjectResult_WhenThePostIdIsInvalid()
        {
            //Arrange
            var controller = new PostCommentsController(_loggerMock.Object, _mockPostService.Object, _mockUserService.Object, _mockCommentService.Object);

            //Act
            var result = controller.GetComments(ConstIds.InvalidGuid, _paginationsParams);

            //Assert
            var badRequestObjectResult = Assert.IsType <BadRequestObjectResult>(result.Result);

            Assert.Equal($"{ConstIds.InvalidGuid} is not valid guid.", badRequestObjectResult.Value);
        }
예제 #7
0
        public void GetComment_ReturnsBadRequestObjectResult_WhenThePostOrCommentIdIsInvalid(string testPostId, string testCommentId)
        {
            //Arrange
            var controller = new PostCommentsController(_loggerMock.Object, _mockPostService.Object, _mockUserService.Object, _mockCommentService.Object);

            //Act
            var result = controller.GetComment(testPostId, testCommentId);

            //Assert
            var badRequestObjectResult = Assert.IsType <BadRequestObjectResult>(result.Result);

            Assert.Equal($"{testPostId} or {testCommentId} is not valid guid.", badRequestObjectResult.Value);
        }
        public async void DeleteComment_ReturnsNoContentResult_WhenTheCommentHasBeenRemoved()
        {
            //Arrange
            _mockCommentService.Setup(Service => Service.DeleteCommentAsync(It.IsAny <Guid>()))
            .Verifiable();


            var controller = new PostCommentsController(_loggerMock.Object, _mockPostService.Object, _mockUserService.Object, _mockCommentService.Object);
            //Act
            var result = await controller.DeleteComment(ConstIds.ExampleCommentId);

            //Act
            var noContentResult = Assert.IsType <NoContentResult>(result);

            _mockCommentService.Verify();
        }
 public void Setup()
 {
     _unitOfWork = new Mock <IUnitOfWork>();
     _mapper     = new Mock <IMapper>();
     _accessor   = new Mock <IHttpContextAccessor>();
     _controller = new PostCommentsController(_unitOfWork.Object, _mapper.Object, _accessor.Object)
     {
         ControllerContext = new ControllerContext()
         {
             HttpContext = new DefaultHttpContext()
             {
                 User = new ClaimsPrincipal()
             }
         }
     };
 }
예제 #10
0
        public async void PartiallyUpdateComment_ReturnsBadRequestResult_WhenTheCommentHasNotBeenUpdated()
        {
            //Arrange
            _mockCommentService.Setup(Service => Service.TryUpdatePostCommentAsync(It.IsAny <Guid>(), It.IsAny <JsonPatchDocument <PostCommentToUpdateDto> >()))
            .ReturnsAsync(false)
            .Verifiable();

            var controller = new PostCommentsController(_loggerMock.Object, _mockPostService.Object, _mockUserService.Object, _mockCommentService.Object);

            //Act
            var result = await controller.PartiallyUpdateComment(ConstIds.ExampleCommentId, GetJsonPatchDocument());

            //Assert
            var badRequestResult = Assert.IsType <BadRequestResult>(result);

            _mockCommentService.Verify();
        }
        public async void DeleteComment_ReturnsInternalServerErrorResult_WhenExceptionThrownInService()
        {
            //Arrange
            _mockCommentService.Setup(Service => Service.DeleteCommentAsync(It.IsAny <Guid>()))
            .Throws(new ArgumentNullException(nameof(Guid)))
            .Verifiable();

            var controller = new PostCommentsController(_loggerMock.Object, _mockPostService.Object, _mockUserService.Object, _mockCommentService.Object);
            //Act
            var result = await controller.DeleteComment(ConstIds.ExampleCommentId);

            //Assert
            var internalServerErrorResult = Assert.IsType <StatusCodeResult>(result);

            Assert.Equal(StatusCodes.Status500InternalServerError, internalServerErrorResult.StatusCode);
            _mockCommentService.Verify();
        }
        public void GetComments_ReturnsInternalServerErrorResult_WhenExceptionThrownInService()
        {
            //Arrange
            _mockPostService.Setup(Service => Service.CheckIfPostExists(It.IsAny <Guid>()))
            .Throws(new ArgumentNullException(nameof(Guid)))
            .Verifiable();

            var controller = new PostCommentsController(_loggerMock.Object, _mockPostService.Object, _mockUserService.Object, _mockCommentService.Object);

            //Act
            var result = controller.GetComments(ConstIds.ExamplePostId, _paginationsParams);

            //Assert
            var internalServerErrorResult = Assert.IsType <StatusCodeResult>(result.Result);

            Assert.Equal(StatusCodes.Status500InternalServerError, internalServerErrorResult.StatusCode);
            _mockPostService.Verify();
        }
        public void GetComments_ReturnsNotFoundObjectResult_WhenThePostDoesntExist()
        {
            //Arrange
            _mockPostService.Setup(Service => Service.CheckIfPostExists(It.IsAny <Guid>()))
            .Returns(false)
            .Verifiable();

            var controller = new PostCommentsController(_loggerMock.Object, _mockPostService.Object, _mockUserService.Object, _mockCommentService.Object);

            //Act
            var result = controller.GetComments(ConstIds.ExamplePostId, _paginationsParams);

            //Assert
            var notFoundObjectResult = Assert.IsType <NotFoundObjectResult>(result.Result);

            Assert.Equal($"Post: {ConstIds.ExamplePostId} not found.", notFoundObjectResult.Value);
            _mockPostService.Verify();
        }
예제 #14
0
        public void GetComment_ReturnsOkObjectResult_WithCommentData()
        {
            //Arrange
            var comment = GetTestPostData().ElementAt(0);

            _mockPostService.Setup(Service => Service.CheckIfPostExists(It.IsAny <Guid>()))
            .Returns(true)
            .Verifiable();
            _mockCommentService.Setup(Service => Service.GetComment(It.IsAny <Guid>()))
            .Returns(comment)
            .Verifiable();

            var controller = new PostCommentsController(_loggerMock.Object, _mockPostService.Object, _mockUserService.Object, _mockCommentService.Object);

            //Act
            var result = controller.GetComment(ConstIds.ExamplePostId, ConstIds.ExampleCommentId);

            //Assert
            var actionResult = Assert.IsType <OkObjectResult>(result.Result);
            var model        = Assert.IsType <PostCommentDto>(actionResult.Value);

            _mockCommentService.Verify();
            _mockPostService.Verify();
        }