public void UpdatePost_TitleIsUpdated_UpdateSlug() { IFileSystem testFileSystem = new FakeFileSystem(); BlogDataStore testDataStore = new BlogDataStore(testFileSystem); Post oldPost = new Post { Slug = "Old-Title", IsPublic = true, PubDate = DateTimeOffset.Now }; Post newPost = new Post { Slug = "New-Title", IsPublic = true, PubDate = DateTimeOffset.Now }; testDataStore.SavePost(oldPost); testDataStore.UpdatePost(newPost, oldPost); Assert.True(testFileSystem.FileExists($"BlogFiles\\Posts\\{newPost.PubDate.ToFileTime()}_{newPost.Id}.xml")); Post result = testDataStore.CollectPostInfo($"BlogFiles\\Posts\\{newPost.PubDate.ToFileTime()}_{newPost.Id}.xml"); Assert.False(testFileSystem.FileExists($"BlogFiles\\Posts\\{oldPost.PubDate.ToFileTime()}_{oldPost.Id}.xml")); }
public void UpdatePost_TitleIsUpdated_UpdateSlug() { IFileSystem testFileSystem = new FakeFileSystem(); BlogDataStore testDataStore = new BlogDataStore(testFileSystem); Post oldPost = new Post { Slug = "Old-Title", IsPublic = true, PubDate = DateTimeOffset.Now }; Post newPost = new Post { Slug = "New-Title", IsPublic = true, PubDate = DateTimeOffset.Now }; testDataStore.SavePost(oldPost); newPost.Id = oldPost.Id; testDataStore.UpdatePost(newPost, true); Post result = testDataStore.CollectPostInfo($"BlogFiles\\Posts\\{newPost.PubDate.UtcDateTime.ToString("s").Replace(":","-")}_{newPost.Id}.xml"); Assert.Equal("New-Title", result.Slug); }
public void UpdatePost_TitleIsUpdated_UpdateSlug() { IFileSystem testFileSystem = new FakeFileSystem(); BlogDataStore testDataStore = new BlogDataStore(new FakeFileSystem()); SlugGenerator slugGenerator = new SlugGenerator(testDataStore); ExcerptGenerator excerptGenerator = new ExcerptGenerator(); Post post = new Post() { Slug = "Title", IsPublic = true, PubDate = DateTimeOffset.Now, }; testDataStore.SavePost(post); EditedPostModel editedPost = new EditedPostModel() { Title = "Edited Title", }; EditModel model = new EditModel(testDataStore, slugGenerator, excerptGenerator); model.OnPostPublish(post.Id, true); testDataStore.UpdatePost(post, post.IsPublic); Assert.True(testFileSystem.FileExists($"BlogFiles\\Posts\\{post.PubDate.ToFileTime()}_{post.Id}.xml")); Post result = testDataStore.CollectPostInfo($"BlogFiles\\Posts\\{post.PubDate.ToFileTime()}_{post.Id}.xml"); Assert.Equal("Edited-Title", post.Slug); }
public void UpdatePost_ChangePost_UpdatesXMLFile() { IFileSystem fakeFileSystem = new FakeFileSystem(); BlogDataStore testDataStore = new BlogDataStore(fakeFileSystem); Post oldPost = new Post { Slug = "Old-Title", Title = "Old Title", Body = "Old body", IsPublic = true, Excerpt = "Old excerpt" }; Post newPost = new Post { Slug = "New-Title", Title = "New Title", Body = "New body", IsPublic = true, Excerpt = "New excerpt" }; testDataStore.SavePost(oldPost); testDataStore.UpdatePost(newPost, oldPost); Assert.True(fakeFileSystem.FileExists($"BlogFiles\\New-Title.xml")); Post result = testDataStore.CollectPostInfo($"BlogFiles\\New-Title.xml"); Assert.Equal(result.Slug, "New-Title"); Assert.Equal(result.Title, "New Title"); Assert.Equal(result.Body, "New body"); Assert.True(result.IsPublic); Assert.Equal(result.Excerpt, "New excerpt"); }
public IActionResult Edit(EditViewModel viewModel, string submitButton) { var post = _dataStore.GetPost(viewModel.EditedPostModel.Id); if (post == null) { return(RedirectToAction("Drafts")); } if (!ModelState.IsValid) { return(RedirectToAction("Drafts", "Admin")); } var wasPublic = post.IsPublic; post.Body = viewModel.EditedPostModel.Body; post.Title = viewModel.EditedPostModel.Title; post.LastModified = DateTimeOffset.Now; post.IsDeleted = submitButton == "Delete"; if (submitButton == "Publish") { post.IsPublic = true; } else if (submitButton == "Update") { post.IsPublic = true; } else if (submitButton == "Delete") { post.IsPublic = false; } else if (submitButton == "Save Draft") { post.IsPublic = false; } if (Request != null) { _dataStore.SaveFiles(Request.Form.Files.ToList()); } _dataStore.UpdatePost(post, wasPublic); return(RedirectToAction("Blog", "Home")); }
public void UpdatePost_ChangePost_DoesNotRemoveComments() { IFileSystem testFileSystem = new FakeFileSystem(); BlogDataStore testDataStore = new BlogDataStore(testFileSystem); Post oldPost = new Post { Slug = "Old-Title", Title = "Old Title", Body = "Old body", IsPublic = true, Excerpt = "Old excerpt" }; Comment comment = new Comment { AuthorName = "Test name", AuthorEmail = "Test email", Body = "test body", PubDate = DateTime.Now, IsPublic = true }; Post newPost = new Post { Slug = "New-Title", Title = "New Title", Body = "New body", IsPublic = true, Excerpt = "New excerpt" }; oldPost.Comments.Add(comment); testDataStore.SavePost(oldPost); newPost.Comments = oldPost.Comments; testDataStore.UpdatePost(newPost, oldPost); Post result = testDataStore.GetPost(newPost.Slug); List <Comment> comments = testDataStore.GetAllComments(newPost.Slug); Assert.True(testFileSystem.FileExists(@"BlogFiles\New-Title.xml")); Assert.False(testFileSystem.FileExists(@"BlogFiles\Old-Title.xml")); Assert.NotEmpty(comments); }
public void UpdatePost(Post newPost, string slug) { oldPost = _dataStore.GetPost(slug); newPost.PubDate = oldPost.PubDate; newPost.Tags = Request.Form["Tags"][0].Replace(" ", "").Split(",").ToList(); if (newPost.Excerpt == null) { ExcerptGenerator excerptGenerator = new ExcerptGenerator(); newPost.Excerpt = excerptGenerator.CreateExcerpt(newPost.Body, 140); } if (Request.Form["updateslug"] == "true") { SlugGenerator slugGenerator = new SlugGenerator(_dataStore); newPost.Slug = slugGenerator.CreateSlug(newPost.Title); } else { newPost.Slug = oldPost.Slug; } newPost.Comments = oldPost.Comments; _dataStore.UpdatePost(newPost, oldPost); }