From 63e7857f458bec4e4dc04ec2b75be488d08420db Mon Sep 17 00:00:00 2001 From: Steven Giesel Date: Sat, 29 Apr 2023 21:05:14 +0200 Subject: [PATCH] Put logic to domain object --- src/LinkDotNet.Blog.Domain/BlogPost.cs | 2 ++ .../Components/CreateNewModel.cs | 2 +- .../ShowBlogPost/ShowBlogPostPage.razor | 8 ++------ .../Domain/BlogPostTests.cs | 20 +++++++++++++++++++ 4 files changed, 25 insertions(+), 7 deletions(-) diff --git a/src/LinkDotNet.Blog.Domain/BlogPost.cs b/src/LinkDotNet.Blog.Domain/BlogPost.cs index 94c80043..9dbfd07e 100644 --- a/src/LinkDotNet.Blog.Domain/BlogPost.cs +++ b/src/LinkDotNet.Blog.Domain/BlogPost.cs @@ -32,6 +32,8 @@ private BlogPost() public bool IsScheduled => ScheduledPublishDate is not null; + public string TagsAsString => Tags is null ? string.Empty : string.Join(", ", Tags.Select(t => t.Content)); + public static BlogPost Create( string title, string shortDescription, diff --git a/src/LinkDotNet.Blog.Web/Features/Admin/BlogPostEditor/Components/CreateNewModel.cs b/src/LinkDotNet.Blog.Web/Features/Admin/BlogPostEditor/Components/CreateNewModel.cs index 76264c7a..3f6922f7 100644 --- a/src/LinkDotNet.Blog.Web/Features/Admin/BlogPostEditor/Components/CreateNewModel.cs +++ b/src/LinkDotNet.Blog.Web/Features/Admin/BlogPostEditor/Components/CreateNewModel.cs @@ -93,7 +93,7 @@ public static CreateNewModel FromBlogPost(BlogPost blogPost) { id = blogPost.Id, Content = blogPost.Content, - Tags = blogPost.Tags != null ? string.Join(",", blogPost.Tags.Select(t => t.Content)) : null, + Tags = blogPost.TagsAsString, Title = blogPost.Title, ShortDescription = blogPost.ShortDescription, IsPublished = blogPost.IsPublished, diff --git a/src/LinkDotNet.Blog.Web/Features/ShowBlogPost/ShowBlogPostPage.razor b/src/LinkDotNet.Blog.Web/Features/ShowBlogPost/ShowBlogPostPage.razor index 7e5b7f9c..e0dbe439 100644 --- a/src/LinkDotNet.Blog.Web/Features/ShowBlogPost/ShowBlogPostPage.razor +++ b/src/LinkDotNet.Blog.Web/Features/ShowBlogPost/ShowBlogPostPage.razor @@ -19,7 +19,7 @@ else + Keywords="@BlogPost.TagsAsString">
@@ -65,11 +65,7 @@ else [Parameter] public string BlogPostId { get; set; } - private string Tags => BlogPost?.Tags != null - ? string.Join(",", BlogPost.Tags.Select(b => b.Content)) - : null; - - private string OgDataImage => BlogPost.PreviewImageUrlFallback ?? BlogPost.PreviewImageUrl; + private string OgDataImage => BlogPost.PreviewImageUrlFallback ?? BlogPost.PreviewImageUrl; private BlogPost BlogPost { get; set; } diff --git a/tests/LinkDotNet.Blog.UnitTests/Domain/BlogPostTests.cs b/tests/LinkDotNet.Blog.UnitTests/Domain/BlogPostTests.cs index 6bba48bc..77a1b29e 100644 --- a/tests/LinkDotNet.Blog.UnitTests/Domain/BlogPostTests.cs +++ b/tests/LinkDotNet.Blog.UnitTests/Domain/BlogPostTests.cs @@ -121,4 +121,24 @@ public void GivenScheduledPublishDate_WhenCreating_ThenIsScheduledPublishDateIsT bp.IsScheduled.Should().BeTrue(); } + + [Fact] + public void GivenBlogPostWithTags_WhenCreatingStringFromTags_ThenTagsAreSeparatedByComma() + { + var bp = new BlogPostBuilder().WithTags("tag 1", "tag 2").Build(); + + var tags = bp.TagsAsString; + + tags.Should().Be("tag 1, tag 2"); + } + + [Fact] + public void GivenBlogPostWithNoTags_WhenCreatingStringFromTags_ThenEmptyString() + { + var bp = new BlogPostBuilder().Build(); + + var tags = bp.TagsAsString; + + tags.Should().BeEmpty(); + } }