File tree Expand file tree Collapse file tree 4 files changed +65
-10
lines changed
LinkDotNet.Blog.IntegrationTests/Infrastructure/Persistence/Sql
LinkDotNet.Blog.TestUtilities
LinkDotNet.Blog.UnitTests/Web/Shared
LinkDotNet.Blog.Web/Shared Expand file tree Collapse file tree 4 files changed +65
-10
lines changed Original file line number Diff line number Diff line change @@ -83,5 +83,26 @@ public async Task ShouldBeUpdateable()
83
83
var blogPostAfterSave = await DbContext . BlogPosts . AsNoTracking ( ) . SingleAsync ( b => b . Id == blogPostFromDb . Id ) ;
84
84
blogPostAfterSave . Title . Should ( ) . Be ( "New Title" ) ;
85
85
}
86
+
87
+ [ Fact ]
88
+ public async Task ShouldFilterAndOrder ( )
89
+ {
90
+ var olderPost = new BlogPostBuilder ( ) . Build ( ) ;
91
+ var newerPost = new BlogPostBuilder ( ) . Build ( ) ;
92
+ var filteredOutPost = new BlogPostBuilder ( ) . WithTitle ( "FilterOut" ) . Build ( ) ;
93
+ await BlogPostRepository . StoreAsync ( olderPost ) ;
94
+ await BlogPostRepository . StoreAsync ( newerPost ) ;
95
+ await BlogPostRepository . StoreAsync ( filteredOutPost ) ;
96
+
97
+ var blogPosts = await BlogPostRepository . GetAllAsync (
98
+ bp => bp . Title != "FilterOut" ,
99
+ bp => bp . UpdatedDate ,
100
+ false ) ;
101
+
102
+ var retrievedPosts = blogPosts . ToList ( ) ;
103
+ retrievedPosts . Any ( b => b . Id == filteredOutPost . Id ) . Should ( ) . BeFalse ( ) ;
104
+ retrievedPosts [ 0 ] . Id . Should ( ) . Be ( olderPost . Id ) ;
105
+ retrievedPosts [ 1 ] . Id . Should ( ) . Be ( newerPost . Id ) ;
106
+ }
86
107
}
87
108
}
Original file line number Diff line number Diff line change 1
- using LinkDotNet . Domain ;
1
+ using System ;
2
+ using LinkDotNet . Domain ;
2
3
3
4
namespace LinkDotNet . Blog . TestUtilities
4
5
{
@@ -9,6 +10,7 @@ public class BlogPostBuilder
9
10
private string content = "Some Content" ;
10
11
private string url = "localhost" ;
11
12
private string [ ] tags ;
13
+ private DateTime updatedDate ;
12
14
13
15
public BlogPostBuilder WithTitle ( string title )
14
16
{
Original file line number Diff line number Diff line change
1
+ using System . Linq ;
2
+ using Bunit ;
3
+ using FluentAssertions ;
4
+ using LinkDotNet . Blog . TestUtilities ;
5
+ using LinkDotNet . Blog . Web . Shared ;
6
+ using Xunit ;
7
+
8
+ namespace LinkDotNet . Blog . UnitTests . Web . Shared
9
+ {
10
+ public class ShortBlogPostTests
11
+ {
12
+ [ Fact ]
13
+ public void ShouldOpenBlogPost ( )
14
+ {
15
+ using var ctx = new TestContext ( ) ;
16
+ var blogPost = new BlogPostBuilder ( ) . Build ( ) ;
17
+ blogPost . Id = "SomeId" ;
18
+ var cut = ctx . RenderComponent < ShortBlogPost > (
19
+ p => p . Add ( c => c . BlogPost , blogPost ) ) ;
20
+
21
+ var readMore = cut . Find ( ".read-more a" ) ;
22
+
23
+ readMore . Attributes . Single ( a => a . Name == "href" ) . Value . Should ( ) . Be ( "/blogPost/SomeId" ) ;
24
+ }
25
+
26
+ [ Fact ]
27
+ public void ShouldNavigateToEscapedTagSiteWhenClickingOnTag ( )
28
+ {
29
+ using var ctx = new TestContext ( ) ;
30
+ var blogPost = new BlogPostBuilder ( ) . WithTags ( "Tag 1" ) . Build ( ) ;
31
+ var cut = ctx . RenderComponent < ShortBlogPost > (
32
+ p => p . Add ( c => c . BlogPost , blogPost ) ) ;
33
+
34
+ var searchByTagLink = cut . Find ( ".goto-tag" ) ;
35
+
36
+ searchByTagLink . Attributes . Single ( a => a . Name == "href" ) . Value . Should ( ) . Be ( "/searchByTag/Tag%201" ) ;
37
+ }
38
+ }
39
+ }
Original file line number Diff line number Diff line change 1
1
@using LinkDotNet .Domain
2
2
@using System .Net
3
3
@using System .Web
4
- @inject NavigationManager _navigationManager
5
4
@inherits MarkdownComponentBase
6
5
<article >
7
6
<div class =" blog-card @AltCssClass" >
15
14
<ul >
16
15
@foreach ( var tag in BlogPost .Tags .Select (t => t .Content ))
17
16
{
18
- <li ><a href =" /searchByTag/@(Uri.EscapeDataString(tag))" >@tag </a ></li >
17
+ <li ><a class = " goto-tag " href =" /searchByTag/@(Uri.EscapeDataString(tag))" >@tag </a ></li >
19
18
}
20
19
</ul >
21
20
</li >
27
26
<h2 ></h2 >
28
27
<p >@RenderMarkupString(BlogPost.ShortDescription) </p >
29
28
<p class =" read-more" >
30
- <a href =" # " @onclick = " @OpenBlogPost " >Read More</a >
29
+ <a href =" /blogPost/@BlogPost.Id " >Read More</a >
31
30
</p >
32
31
</div >
33
32
</div >
40
39
public bool UseAlternativeStyle { get ; set ; }
41
40
42
41
private string AltCssClass => UseAlternativeStyle ? " alt" : string .Empty ;
43
-
44
- private void OpenBlogPost ()
45
- {
46
- _navigationManager .NavigateTo ($" /blogPost/{BlogPost .Id }" );
47
- }
48
-
49
42
}
You can’t perform that action at this time.
0 commit comments