Fix issue with blog preview when content under 1000 chars.
This commit is contained in:
parent
3a8aedd653
commit
0f64014b30
6 changed files with 38 additions and 10 deletions
31
Website.Tests/VIewModels/BlogPostPreviewViewModelTests.cs
Normal file
31
Website.Tests/VIewModels/BlogPostPreviewViewModelTests.cs
Normal file
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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("<h1>header</h1>");
|
||||
vm.ContentHtml.Should().Be("<h1>header</h1>");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
}
|
|
@ -4,6 +4,6 @@
|
|||
ViewData["Title"] = Model.Title;
|
||||
}
|
||||
|
||||
@Html.Raw(Model.Content)
|
||||
@Html.Raw(Model.ContentHtml)
|
||||
|
||||
<small>Posted on @Model.Timestamp</small>
|
|
@ -22,7 +22,7 @@
|
|||
@foreach (var post in Model.Posts) {
|
||||
<article>
|
||||
<h2><a href="/blog/view/@post.Url">@post.Title</a></h2>
|
||||
@Html.Raw(post.Content)
|
||||
@Html.Raw(post.ContentHtml)
|
||||
<small>Posted on @post.Timestamp</small>
|
||||
<p><a href="/blog/view/@post.Url">Read more...</a></p>
|
||||
</article>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue