Exemplo n.º 1
0
        public void SubmitPost_CallPostServiceSubmit()
        {
            // Arrange
            var voteServiceMock    = new Mock <IVoteService>();
            var commentServiceMock = new Mock <ICommentService>();
            var userManagerMock    = new Mock <IApplicationUserManager>();
            var mapperMock         = new Mock <IMapper>();

            var postServiceMock = new Mock <IPostService>();

            postServiceMock
            .Setup(x => x.Submit(
                       It.IsAny <Guid>(),
                       It.IsAny <string>(),
                       It.IsAny <string>(),
                       It.IsAny <string>()))
            .Returns(new Post());

            var categoryServiceMock = new Mock <ICategoryService>();

            categoryServiceMock
            .Setup(x => x.GetById(It.IsAny <Guid>(), It.IsAny <bool>()))
            .Returns(new[] { new Category() }.AsQueryable());

            var identityMock  = new Mock <IIdentity>();
            var principalMock = new Mock <IPrincipal>();

            principalMock.SetupGet(x => x.Identity).Returns(identityMock.Object);
            var contextMock = new Mock <ControllerContext>();

            contextMock.SetupGet(p => p.HttpContext.User).Returns(principalMock.Object);

            var controller = new PostsController(
                categoryServiceMock.Object,
                postServiceMock.Object,
                voteServiceMock.Object,
                commentServiceMock.Object,
                userManagerMock.Object,
                mapperMock.Object)
            {
                ControllerContext = contextMock.Object
            };

            var model = new PostSubmitViewModel
            {
                CategoryId = Guid.NewGuid(),
                Title      = "title",
                Content    = "content"
            };

            // Act
            var result = controller.Submit(model);

            // Assert
            postServiceMock.Verify(x => x.Submit(
                                       It.Is <Guid>(y => y == model.CategoryId),
                                       It.IsAny <string>(),
                                       It.Is <string>(y => y == model.Title),
                                       It.Is <string>(y => y == model.Content)));
        }
        public ActionResult Submit(PostSubmitViewModel model)
        {
            if (!this.ModelState.IsValid)
            {
                return(View(model));
            }

            var category = this.categoryService.GetById(model.CategoryId)
                           .FirstOrDefault();

            if (category == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            var userId = this.User.Identity.GetUserId();
            var post   = this.postService
                         .Submit(model.CategoryId, userId, model.Title, model.Content);

            return(RedirectToAction("Post", new { id = post.Id }));
        }