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) {
- @Html.Raw(post.Content)
+ @Html.Raw(post.ContentHtml)
Posted on @post.Timestamp
Read more...