From 0f64014b30c8e735452b3aa56fb93e61f57b33f6 Mon Sep 17 00:00:00 2001 From: Robert Marshall Date: Mon, 26 Aug 2019 15:04:32 +0100 Subject: [PATCH] Fix issue with blog preview when content under 1000 chars. --- .../BlogPostPreviewViewModelTests.cs | 31 +++++++++++++++++++ .../VIewModels/BlogPostViewModelTests.cs | 4 +-- .../ViewModels/BlogPostPreviewViewModel.cs | 5 +-- Website/ViewModels/BlogPostViewModel.cs | 4 +-- Website/Views/Blog/Entry.cshtml | 2 +- Website/Views/Blog/Page.cshtml | 2 +- 6 files changed, 38 insertions(+), 10 deletions(-) create mode 100644 Website.Tests/VIewModels/BlogPostPreviewViewModelTests.cs diff --git a/Website.Tests/VIewModels/BlogPostPreviewViewModelTests.cs b/Website.Tests/VIewModels/BlogPostPreviewViewModelTests.cs new file mode 100644 index 0000000..af1e18b --- /dev/null +++ b/Website.Tests/VIewModels/BlogPostPreviewViewModelTests.cs @@ -0,0 +1,31 @@ +using FluentAssertions; +using Website.Data.States; +using Website.Models; +using Website.ViewModels; +using Xunit; + +namespace Website.Tests.VIewModels +{ + public class BlogPostPreviewViewModelTests + { + [Fact] + public void Constructor_WithContentOver1000Characters_LimitsContentTo1000Chars() { + var state = new BlogPostState { + Post_Content = new string('a', 1001) + }; + var post = new BlogPost(state); + var vm = new BlogPostPreviewViewModel(post); + vm.Content.Length.Should().Be(1000); + } + + [Fact] + public void Constructor_WithContentUnder1000Characters_ContentIsIdenticalLength() { + var state = new BlogPostState { + Post_Content = new string('a', 900) + }; + var post = new BlogPost(state); + var vm = new BlogPostPreviewViewModel(post); + vm.Content.Length.Should().Be(900); + } + } +} \ No newline at end of file diff --git a/Website.Tests/VIewModels/BlogPostViewModelTests.cs b/Website.Tests/VIewModels/BlogPostViewModelTests.cs index 399ecaf..7176239 100644 --- a/Website.Tests/VIewModels/BlogPostViewModelTests.cs +++ b/Website.Tests/VIewModels/BlogPostViewModelTests.cs @@ -10,13 +10,13 @@ namespace Website.Tests.VIewModels public class BlogPostViewModelTests { [Fact] - public void Content_WithMarkdownContent_ReturnsHtml() { + public void ContentHtml_WithMarkdownContent_ReturnsHtml() { var state = new BlogPostState { Post_Content="# header" }; var post = new BlogPost(state); var vm = new BlogPostViewModel(post); - vm.Content.Should().Be("

header

"); + vm.ContentHtml.Should().Be("

header

"); } [Fact] diff --git a/Website/ViewModels/BlogPostPreviewViewModel.cs b/Website/ViewModels/BlogPostPreviewViewModel.cs index bbc9741..fb72fe8 100644 --- a/Website/ViewModels/BlogPostPreviewViewModel.cs +++ b/Website/ViewModels/BlogPostPreviewViewModel.cs @@ -5,9 +5,6 @@ namespace Website.ViewModels { public class BlogPostPreviewViewModel:BlogPostViewModel { - public BlogPostPreviewViewModel(BlogPost blogPost):base(blogPost) - { - Content = Markdown.ToHtml(blogPost.Content.Substring(0, 1000), GetPipeline()).Trim(); - } + public BlogPostPreviewViewModel(BlogPost blogPost) : base(blogPost) => Content = Content.Length < 1000 ? Content : Content.Substring(0, 1000); } } \ No newline at end of file diff --git a/Website/ViewModels/BlogPostViewModel.cs b/Website/ViewModels/BlogPostViewModel.cs index 14df1dc..0eaa152 100644 --- a/Website/ViewModels/BlogPostViewModel.cs +++ b/Website/ViewModels/BlogPostViewModel.cs @@ -12,8 +12,7 @@ namespace Website.ViewModels Title = blogPost.Title; Timestamp = FormatTimestamp(blogPost.Timestamp); Url = blogPost.Url; - - Content = Markdown.ToHtml(blogPost.Content, GetPipeline()).Trim(); + Content = blogPost.Content; } string GetDaySuffix(int day) { @@ -49,5 +48,6 @@ namespace Website.ViewModels public string Content { get; protected set; } public string Timestamp { get; private set; } public string Url { get; private set; } + public object ContentHtml => Markdown.ToHtml(Content, GetPipeline()).Trim(); } } \ No newline at end of file diff --git a/Website/Views/Blog/Entry.cshtml b/Website/Views/Blog/Entry.cshtml index 0409de9..0868cf9 100644 --- a/Website/Views/Blog/Entry.cshtml +++ b/Website/Views/Blog/Entry.cshtml @@ -4,6 +4,6 @@ ViewData["Title"] = Model.Title; } -@Html.Raw(Model.Content) +@Html.Raw(Model.ContentHtml) Posted on @Model.Timestamp \ No newline at end of file diff --git a/Website/Views/Blog/Page.cshtml b/Website/Views/Blog/Page.cshtml index d168620..02c6bbc 100644 --- a/Website/Views/Blog/Page.cshtml +++ b/Website/Views/Blog/Page.cshtml @@ -22,7 +22,7 @@ @foreach (var post in Model.Posts) {

@post.Title

- @Html.Raw(post.Content) + @Html.Raw(post.ContentHtml) Posted on @post.Timestamp

Read more...