コード例 #1
0
        public IActionResult DeleteDraft(AdminEditBlogPostDraftModel model)
        {
            var draft = model.Draft;

            blogRepository.DeleteDraft(draft);
            TempData["message"] = "Your draft was deleted";
            return(RedirectToAction("Home"));
        }
コード例 #2
0
 public IActionResult PreviewDraft(AdminEditBlogPostDraftModel model)
 {
     // save and redirect
     if (ModelState.IsValid)
     {
         blogRepository.SaveDraft(model.Draft);
     }
     return(RedirectToAction(nameof(PreviewDraft), new { draftId = model.Draft.BlogPostTemplateId }));
 }
コード例 #3
0
 public IActionResult AddCategoryToDraft(AdminEditBlogPostDraftModel model, string newCategory)
 {
     model.CategoriesSelected.Add(new CategoryCheckBox
     {
         Category = newCategory,
         Selected = true
     });
     return(View(nameof(EditBlogPostDraft), model));
 }
コード例 #4
0
        public IActionResult UpdateDraft(AdminEditBlogPostDraftModel model)
        {
            if (ModelState.IsValid)
            {
                blogRepository.SaveDraft(model.Draft);
                TempData["message"] = "Your draft was successfully updated";
            }
            else
            {
                TempData["message"] = "Your requested action could not be completed";
            }

            return(RedirectToAction(nameof(EditBlogPostDraft), new { blogPostDraftId = model.Draft.BlogPostTemplateId }));
        }
コード例 #5
0
        public IActionResult PublishDraftToPost(AdminEditBlogPostDraftModel model)
        {
            var draft = model.Draft;

            if (ModelState.IsValid)
            {
                blogRepository.PublishDraftToPost(draft);
                TempData["message"] = "Your draft was successfully published";
                return(RedirectToAction("Home"));
            }
            else
            {
                TempData["message"] = "Your request could not be completed";
                return(View(nameof(EditBlogPostDraft), model));
            }
        }
コード例 #6
0
        public void EditBlogPostDraft_HasNonExistentTitle_SavesInRepo()
        {
            var mockRepo = Substitute.For <IBlogPostRepository>();

            mockRepo.GetAllCategoriesUsed(false).Returns(new List <string>());
            var controller = new AdminController(mockRepo);

            controller.TempData = Substitute.For <ITempDataDictionary>();

            var draft = ValidDraftFactory();
            var model = new AdminEditBlogPostDraftModel(mockRepo)
            {
                Draft = draft
            };

            var result = controller.EditBlogPostDraft(model);

            mockRepo.Received().SaveDraft(draft);
        }
コード例 #7
0
        public void EditBlogPostDraft_NoTitle_DoesNotSaveInRepo()
        {
            var mockRepo = Substitute.For <IBlogPostRepository>();

            mockRepo.GetAllCategoriesUsed(false).Returns(new List <string>());
            var controller = new AdminController(mockRepo);

            var draft = new BlogPostDraft();

            draft.PageTitle   = "";
            draft.FullContent = "something";
            var model = new AdminEditBlogPostDraftModel(mockRepo)
            {
                Draft = draft
            };

            var result = controller.EditBlogPostDraft(model);

            mockRepo.DidNotReceive().SaveDraft(draft);
        }
コード例 #8
0
        public void PublishDraftToPost_ValidState_CallsRepoPublish()
        {
            var mockRepo = Substitute.For <IBlogPostRepository>();

            mockRepo.GetAllCategoriesUsed(false).Returns(new List <string>());
            var draft = new BlogPostDraft {
                PageTitle = "Something", FullContent = "something..."
            };
            var model = new AdminEditBlogPostDraftModel(mockRepo)
            {
                Draft = draft
            };

            var controller = new AdminController(mockRepo);

            controller.TempData = Substitute.For <ITempDataDictionary>();
            var result = controller.PublishDraftToPost(model);

            mockRepo.Received().PublishDraftToPost(draft);
        }
コード例 #9
0
        public ViewResult EditBlogPostDraft(int blogPostDraftId)
        {
            var repoDraft = blogRepository.GetDraftById(blogPostDraftId);
            AdminEditBlogPostDraftModel model;

            if (repoDraft == null)
            {
                model = new AdminEditBlogPostDraftModel(blogRepository)
                {
                    Draft = new BlogPostDraft()
                };
            }
            else
            {
                model = new AdminEditBlogPostDraftModel(blogRepository)
                {
                    Draft = repoDraft
                };
            }
            return(View(model));
        }
コード例 #10
0
        public void GetDraft_FillsSelectedCats()
        {
            List <CategoryCheckBox> boxes = new List <CategoryCheckBox>();

            boxes.Add(new CategoryCheckBox {
                Category = "Cat1", Selected = true
            });
            boxes.Add(new CategoryCheckBox {
                Category = "Cat2", Selected = true
            });
            boxes.Add(new CategoryCheckBox {
                Category = "Cat3", Selected = false
            });
            boxes.Add(new CategoryCheckBox {
                Category = "Cat4", Selected = true
            });

            var mockRepo = Substitute.For <IBlogPostRepository>();

            mockRepo.GetAllCategoriesUsed(false)
            .Returns(new List <string> {
                "Cat1", "Cat2", "Cat3", "Cat4"
            });

            var model = new AdminEditBlogPostDraftModel(mockRepo);

            model.Draft = new BlogPostDraft
            {
                PageTitle = "Title"
            };
            model.Draft.CategoriesDbCollection = "Cat1,Cat3";
            model.CategoriesSelected           = boxes;

            Assert.Contains("Cat2", model.Draft.Categories);
            Assert.Contains("Cat4", model.Draft.Categories);
            Assert.Contains("Cat1", model.Draft.Categories);

            Assert.IsFalse(model.Draft.Categories.Contains("Cat3"));
            Assert.AreEqual(model.Draft.Categories.Count, 3);
        }
コード例 #11
0
        public IActionResult EditBlogPostDraft(AdminEditBlogPostDraftModel model)
        {
            var draft = model.Draft;

            if (string.IsNullOrEmpty(draft.PageTitle))
            {
                ModelState.AddModelError("", "Your draft must have a page title");
                return(View());
            }
            if (blogRepository.SaveDraft(draft))
            {
                TempData["message"] = "Your draft was successfully saved to the database";
                return(RedirectToAction("Home"));
            }
            else
            {
                TempData["message"] = "A post with that title already exists. " +
                                      "Your changes could not be saved";
                ModelState.AddModelError("", "A post with that title already exists");
                return(View(model));
            }
        }