1
- using System . Linq ;
1
+ using System ;
2
+ using System . Linq ;
2
3
using System . Threading . Tasks ;
3
4
using AngleSharp . Html . Dom ;
4
5
using Bunit ;
11
12
12
13
namespace LinkDotNet . Blog . IntegrationTests . Web . Pages . Admin . Dashboard
13
14
{
14
- public sealed class VisitCountPerPageTests : SqlDatabaseTestBase < BlogPost >
15
+ public class VisitCountPerPageTests : SqlDatabaseTestBase < BlogPost >
15
16
{
16
17
[ Fact ]
17
18
public async Task ShouldShowCounts ( )
@@ -35,6 +36,37 @@ public async Task ShouldShowCounts()
35
36
elements [ 2 ] . InnerHtml . Should ( ) . Be ( "2" ) ;
36
37
}
37
38
39
+ [ Fact ]
40
+ public async Task ShouldFilterStartDate ( )
41
+ {
42
+ var blogPost1 = new BlogPostBuilder ( ) . WithTitle ( "1" ) . WithLikes ( 2 ) . Build ( ) ;
43
+ var blogPost2 = new BlogPostBuilder ( ) . WithTitle ( "2" ) . WithLikes ( 2 ) . Build ( ) ;
44
+ await Repository . StoreAsync ( blogPost1 ) ;
45
+ await Repository . StoreAsync ( blogPost2 ) ;
46
+ var urlClicked1New = new UserRecord
47
+ { UrlClicked = $ "blogPost/{ blogPost1 . Id } ", DateTimeUtcClicked = DateTime . UtcNow } ;
48
+ var urlClicked1Old = new UserRecord
49
+ { UrlClicked = $ "blogPost/{ blogPost1 . Id } ", DateTimeUtcClicked = DateTime . MinValue } ;
50
+ var urlClicked2 = new UserRecord
51
+ { UrlClicked = $ "blogPost/{ blogPost2 . Id } ", DateTimeUtcClicked = DateTime . MinValue } ;
52
+ await DbContext . UserRecords . AddRangeAsync ( new [ ] { urlClicked1New , urlClicked1Old , urlClicked2 } ) ;
53
+ await DbContext . SaveChangesAsync ( ) ;
54
+ using var ctx = new TestContext ( ) ;
55
+ ctx . Services . AddScoped ( _ => DbContext ) ;
56
+ var cut = ctx . RenderComponent < VisitCountPerPage > ( ) ;
57
+
58
+ cut . FindComponent < DateRangeSelector > ( ) . Find ( "select" ) . Change ( DateTime . UtcNow . Date ) ;
59
+
60
+ cut . WaitForState ( ( ) => cut . FindAll ( "td" ) . Any ( ) ) ;
61
+ var elements = cut . FindAll ( "td" ) . ToList ( ) ;
62
+ elements . Count . Should ( ) . Be ( 3 ) ;
63
+ var titleData = elements [ 0 ] . ChildNodes . Single ( ) as IHtmlAnchorElement ;
64
+ titleData . Should ( ) . NotBeNull ( ) ;
65
+ titleData . InnerHtml . Should ( ) . Be ( blogPost1 . Title ) ;
66
+ titleData . Href . Should ( ) . Contain ( $ "blogPost/{ blogPost1 . Id } ") ;
67
+ elements [ 1 ] . InnerHtml . Should ( ) . Be ( "1" ) ;
68
+ }
69
+
38
70
private async Task SaveBlogPostArticleClicked ( string blogPostId , int count )
39
71
{
40
72
var urlClicked = $ "blogPost/{ blogPostId } ";
0 commit comments