示例#1
0
        public void ShouldReturnJson_WhenCalledWithValidDataSourceRequest()
        {
            // Arrange
            var postsServiceMock = new Mock <IPostService>();

            postsServiceMock
            .Setup(m => m.GetById(It.IsAny <Guid>()))
            .Returns(new Post());
            postsServiceMock
            .Setup(m => m.HardDelete(It.IsAny <Post>()));
            var context = new Mock <HttpContextBase>();

            context.Setup(c => c.Cache)
            .Returns(new Cache());
            PostAdminController postAdminController = new PostAdminController(postsServiceMock.Object);

            postAdminController.ControllerContext = new ControllerContext(context.Object, new RouteData(), postAdminController);
            var postDetailsViewModel = new PostGridViewModel()
            {
                Id = "00000000-0000-0000-0000-000000000000"
            };

            // Act & Assert
            postAdminController
            .WithCallTo(c => c.HardDeletePost(postDetailsViewModel))
            .ShouldReturnJson();
        }
示例#2
0
        public ActionResult UpdatePost(PostGridViewModel postGridViewModel)
        {
            if (postGridViewModel != null)
            {
                var post = this.postService
                           .GetById(new Guid(postGridViewModel.Id));

                post.Title       = postGridViewModel.Title;
                post.Description = postGridViewModel.Description;
                post.Content     = postGridViewModel.Content;

                if (post.IsDeleted && !postGridViewModel.IsDeleted)
                {
                    post.IsDeleted = postGridViewModel.IsDeleted;
                    post.DeletedOn = null;
                }

                this.postService.Update(post);

                if (!post.IsDeleted && postGridViewModel.IsDeleted)
                {
                    this.postService.Delete(post);
                    postGridViewModel.DeletedOn = post.DeletedOn;
                }
            }

            return(this.Json(new[] { postGridViewModel }));
        }
示例#3
0
        public void CallGetByIdAndHardDeleteOnce_WhenCalledWithValidPostGridViewModel()
        {
            // Arrange
            var postsServiceMock = new Mock <IPostService>();

            postsServiceMock
            .Setup(m => m.GetById(It.IsAny <Guid>()))
            .Returns(new Post());
            postsServiceMock
            .Setup(m => m.HardDelete(It.IsAny <Post>()));
            var context = new Mock <HttpContextBase>();

            context.Setup(c => c.Cache)
            .Returns(new Cache());
            PostAdminController postAdminController = new PostAdminController(postsServiceMock.Object);

            postAdminController.ControllerContext = new ControllerContext(context.Object, new RouteData(), postAdminController);
            var postDetailsViewModel = new PostGridViewModel()
            {
                Id = "00000000-0000-0000-0000-000000000000"
            };

            // Act
            postAdminController.HardDeletePost(postDetailsViewModel);

            // Assert
            postsServiceMock.Verify(m => m.GetById(It.IsAny <Guid>()), Times.Once);
            postsServiceMock.Verify(m => m.HardDelete(It.IsAny <Post>()), Times.Once);
        }
示例#4
0
        public void CallGetByIdUpdateAndDeleteOnce_WhenCalledWithIsDeletedTrue()
        {
            // Arrange
            var postsServiceMock = new Mock <IPostService>();

            postsServiceMock
            .Setup(m => m.GetById(It.IsAny <Guid>()))
            .Returns(new Post());
            postsServiceMock
            .Setup(m => m.Update(It.IsAny <Post>()));
            postsServiceMock
            .Setup(m => m.Delete(It.IsAny <Post>()));
            PostAdminController postAdminController = new PostAdminController(postsServiceMock.Object);
            var postDetailsViewModel = new PostGridViewModel()
            {
                Id          = "00000000-0000-0000-0000-000000000000",
                Title       = string.Empty,
                Description = string.Empty,
                Content     = string.Empty,
                IsDeleted   = true
            };

            // Act
            postAdminController.UpdatePost(postDetailsViewModel);

            // Assert
            postsServiceMock.Verify(m => m.GetById(It.IsAny <Guid>()), Times.Once);
            postsServiceMock.Verify(m => m.Update(It.IsAny <Post>()), Times.Once);
            postsServiceMock.Verify(m => m.Delete(It.IsAny <Post>()), Times.Once);
        }
示例#5
0
        public ActionResult HardDeletePost(PostGridViewModel postGridViewModel)
        {
            if (postGridViewModel != null)
            {
                var post = this.postService.GetById(new Guid(postGridViewModel.Id));
                this.postService.HardDelete(post);
            }

            this.HttpContext.Cache.Remove("mostRecentPosts");

            return(this.Json(new[] { postGridViewModel }));
        }
示例#6
0
        public ActionResult CreatePost(PostGridViewModel postGridViewModel)
        {
            if (postGridViewModel != null)
            {
                var post = this.postService
                           .AddNewPost(
                    postGridViewModel.Title,
                    postGridViewModel.Description,
                    postGridViewModel.Content,
                    User.Identity.Name);

                postGridViewModel = MappingService.Provider.Map <PostGridViewModel>(post);
            }

            return(this.Json(new[] { postGridViewModel }));
        }
示例#7
0
        public void CallPostServiceAddNewPostOnce_WhenCalledWithValidDataSourceRequest()
        {
            // Arrange
            var postsServiceMock = new Mock <IPostService>();

            postsServiceMock
            .Setup(m => m.AddNewPost(
                       It.IsAny <string>(),
                       It.IsAny <string>(),
                       It.IsAny <string>(),
                       It.IsAny <string>()))
            .Returns(new Post());
            PostAdminController postAdminController = new PostAdminController(postsServiceMock.Object);
            var contextMock = new Mock <ControllerContext>();

            contextMock
            .SetupGet(p => p.HttpContext.User.Identity.Name)
            .Returns("username");
            postAdminController.ControllerContext = contextMock.Object;
            var postDetailsViewModel = new PostGridViewModel()
            {
                Title       = string.Empty,
                Description = string.Empty,
                Content     = string.Empty
            };
            var mapperServiceMock = new Mock <IMappingService>();

            mapperServiceMock
            .Setup(x => x.Map <PostGridViewModel>(It.IsAny <Post>()))
            .Returns(postDetailsViewModel);
            MappingService.Provider = mapperServiceMock.Object;

            // Act
            postAdminController.CreatePost(postDetailsViewModel);

            // Assert
            postsServiceMock.Verify(
                m => m.AddNewPost(
                    It.IsAny <string>(),
                    It.IsAny <string>(),
                    It.IsAny <string>(),
                    It.IsAny <string>()),
                Times.Once);
        }
示例#8
0
        public void ShouldReturnJson_WhenCalledWithValidDataSourceRequest()
        {
            // Arrange
            var postDetailsViewModel = new PostGridViewModel();
            var mapperServiceMock    = new Mock <IMappingService>();

            mapperServiceMock.Setup(x => x.Map <PostGridViewModel>(It.IsAny <Post>())).Returns(postDetailsViewModel);
            MappingService.Provider = mapperServiceMock.Object;
            var postEnumerable = new List <Post>()
            {
                new Post()
            }.AsEnumerable <Post>();
            var postsServiceMock = new Mock <IPostService>();

            postsServiceMock.Setup(m => m.AllIncludingDeleted())
            .Returns(postEnumerable);
            PostAdminController postAdminController = new PostAdminController(postsServiceMock.Object);

            // Act & Assert
            postAdminController
            .WithCallTo(c => c.ReadPosts(new DataSourceRequest()))
            .ShouldReturnJson();
        }
示例#9
0
        public void ShouldReturnJson_WhenCalledWithValidViewModelData()
        {
            // Arrange
            var postsServiceMock = new Mock <IPostService>();

            postsServiceMock
            .Setup(m => m.GetById(It.IsAny <Guid>()))
            .Returns(new Post());
            postsServiceMock
            .Setup(m => m.Update(It.IsAny <Post>()));
            PostAdminController postAdminController = new PostAdminController(postsServiceMock.Object);
            var postDetailsViewModel = new PostGridViewModel()
            {
                Id          = "00000000-0000-0000-0000-000000000000",
                Title       = string.Empty,
                Description = string.Empty,
                Content     = string.Empty
            };

            // Act & Assert
            postAdminController
            .WithCallTo(c => c.UpdatePost(postDetailsViewModel))
            .ShouldReturnJson();
        }
        public JsonResult CreatePost([DataSourceRequest] 
                                        DataSourceRequest request, PostGridViewModel post)
        {
            ModelState["CreatedOn"].Errors.Clear();
            if (post == null || !ModelState.IsValid)
            {
                return Json(new[] { post }.ToDataSourceResult(request, ModelState), JsonRequestBehavior.AllowGet);
            }

            var fromUser = this.Data.Users.All().FirstOrDefault(us => us.Id == post.FromId);
            var toUser = this.Data.Users.All().FirstOrDefault(us => us.Id == post.ToId);

            var newPost = new Post
            {
                Content = post.Content,
                From = fromUser,
                To = toUser,
                CreatedOn = DateTime.Now
            };

            this.Data.Posts.Add(newPost);
            this.Data.SaveChanges();
            post.Id = newPost.Id;
            post.CreatedOn = newPost.CreatedOn;

            return Json(new[] { post }.ToDataSourceResult(request, ModelState), JsonRequestBehavior.AllowGet);
        }
        public JsonResult UpdatePost([DataSourceRequest]
                                      DataSourceRequest request, PostGridViewModel post)
        {
            var existingPost = this.Data.Posts.All().FirstOrDefault(u => u.Id == post.Id);
            ModelState["CreatedOn"].Errors.Clear();

            if (post == null || !ModelState.IsValid || existingPost == null)
            {
                return Json((new[] { post }.ToDataSourceResult(request, ModelState)), JsonRequestBehavior.AllowGet);
            }

            var fromUser = this.Data.Users.All().FirstOrDefault(us => us.Id == post.FromId);
            var toUser = this.Data.Users.All().FirstOrDefault(us => us.Id == post.ToId);

            existingPost.Id = post.Id;
            existingPost.Content = post.Content;
            existingPost.From = fromUser;
            existingPost.To = toUser;

            if (post.CreatedOn != null)
            {
                existingPost.CreatedOn = (DateTime)post.CreatedOn;
            }

            this.Data.SaveChanges();

            return Json((new[] { post }.ToDataSourceResult(request, ModelState)), JsonRequestBehavior.AllowGet);
        }
        public JsonResult DestroyPost([DataSourceRequest]
                                      DataSourceRequest request, PostGridViewModel post)
        {
            var existingPost = this.Data.Posts.All().FirstOrDefault(u => u.Id == post.Id);

            this.Data.Posts.Delete(existingPost);
            this.Data.SaveChanges();

            return Json(new[] { post }, JsonRequestBehavior.AllowGet);
        }