public void Vote_ShouldCallPostServiceToggleVote() { // Arrange var post = new Post { Id = Guid.NewGuid() }; var categoryServiceMock = new Mock <ICategoryService>(); var postServiceMock = new Mock <IPostService>(); postServiceMock .Setup(x => x.GetById(It.Is <Guid>(g => g == post.Id), It.IsAny <bool>())) .Returns(new Post[] { post }.AsQueryable()); var voteServiceMock = new Mock <IVoteService>(); var userManagerMock = new Mock <IApplicationUserManager>(); 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 PostsAjaxController( categoryServiceMock.Object, postServiceMock.Object, voteServiceMock.Object, userManagerMock.Object) { ControllerContext = contextMock.Object }; // Act controller.Vote(post.Id, VoteType.Upvote); // Assert voteServiceMock.Verify(x => x.ToggleVote( It.Is <Guid>(g => g == post.Id), It.IsAny <string>(), It.Is <VoteType>(v => v == VoteType.Upvote))); }
public void Edit_ShouldReturnForbiddenIfUserIsNotTheAuthor() { // Arrange var post = new Post { Id = Guid.NewGuid(), AuthorId = "userid" }; var categoryServiceMock = new Mock <ICategoryService>(); var postServiceMock = new Mock <IPostService>(); postServiceMock .Setup(x => x.GetById(It.Is <Guid>(g => g == post.Id), It.IsAny <bool>())) .Returns(new Post[] { post }.AsQueryable()); var voteServiceMock = new Mock <IVoteService>(); var userManagerMock = new Mock <IApplicationUserManager>(); 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 PostsAjaxController( categoryServiceMock.Object, postServiceMock.Object, voteServiceMock.Object, userManagerMock.Object) { ControllerContext = contextMock.Object }; // Act var result = controller.Edit(post.Id, "newcontent"); // Assert // Assert Assert.IsInstanceOf <HttpStatusCodeResult>(result); Assert.AreEqual((int)HttpStatusCode.Forbidden, (result as HttpStatusCodeResult).StatusCode); }