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 })); }