@@ -26,5 +26,76 @@ public void ShouldDisplayLikes(int likes, string expectedText)
26
26
27
27
label . Should ( ) . Be ( expectedText ) ;
28
28
}
29
+
30
+ [ Fact ]
31
+ public void ShouldInvokeEventWhenButtonClicked ( )
32
+ {
33
+ Services . AddScoped ( _ => new Mock < ILocalStorageService > ( ) . Object ) ;
34
+ var blogPost = new BlogPostBuilder ( ) . Build ( ) ;
35
+ var wasClicked = false ;
36
+ var wasLike = false ;
37
+ var cut = RenderComponent < Like > (
38
+ p => p . Add ( l => l . BlogPost , blogPost )
39
+ . Add ( l => l . OnBlogPostLiked , b =>
40
+ {
41
+ wasClicked = true ;
42
+ wasLike = b ;
43
+ } ) ) ;
44
+
45
+ cut . Find ( "button" ) . Click ( ) ;
46
+
47
+ wasClicked . Should ( ) . BeTrue ( ) ;
48
+ wasLike . Should ( ) . BeTrue ( ) ;
49
+ }
50
+
51
+ [ Fact ]
52
+ public void ShouldSetLocalStorageVariableOnClick ( )
53
+ {
54
+ var localStorage = new Mock < ILocalStorageService > ( ) ;
55
+ Services . AddScoped ( _ => localStorage . Object ) ;
56
+ var blogPost = new BlogPostBuilder ( ) . Build ( ) ;
57
+ var cut = RenderComponent < Like > (
58
+ p => p . Add ( l => l . BlogPost , blogPost ) ) ;
59
+
60
+ cut . Find ( "button" ) . Click ( ) ;
61
+
62
+ localStorage . Verify ( l => l . SetItemAsync ( "hasLiked" , true , default ) , Times . Once ) ;
63
+ }
64
+
65
+ [ Fact ]
66
+ public void ShouldCheckLocalStorageOnInit ( )
67
+ {
68
+ var localStorage = new Mock < ILocalStorageService > ( ) ;
69
+ localStorage . Setup ( l => l . ContainKeyAsync ( "hasLiked" , default ) ) . ReturnsAsync ( true ) ;
70
+ localStorage . Setup ( l => l . GetItemAsync < bool > ( "hasLiked" , default ) ) . ReturnsAsync ( true ) ;
71
+ Services . AddScoped ( _ => localStorage . Object ) ;
72
+ var blogPost = new BlogPostBuilder ( ) . Build ( ) ;
73
+ var wasLike = true ;
74
+ var cut = RenderComponent < Like > (
75
+ p => p . Add ( l => l . BlogPost , blogPost )
76
+ . Add ( l => l . OnBlogPostLiked , b => wasLike = b ) ) ;
77
+
78
+ cut . Find ( "button" ) . Click ( ) ;
79
+
80
+ wasLike . Should ( ) . BeFalse ( ) ;
81
+ }
82
+
83
+ [ Fact ]
84
+ public void ShouldCheckStorageOnClickAgainAndDoNothingOnMismatch ( )
85
+ {
86
+ var localStorage = new Mock < ILocalStorageService > ( ) ;
87
+ Services . AddScoped ( _ => localStorage . Object ) ;
88
+ var blogPost = new BlogPostBuilder ( ) . Build ( ) ;
89
+ var wasClicked = false ;
90
+ var cut = RenderComponent < Like > (
91
+ p => p . Add ( l => l . BlogPost , blogPost )
92
+ . Add ( l => l . OnBlogPostLiked , _ => wasClicked = true ) ) ;
93
+ localStorage . Setup ( l => l . ContainKeyAsync ( "hasLiked" , default ) ) . ReturnsAsync ( true ) ;
94
+ localStorage . Setup ( l => l . GetItemAsync < bool > ( "hasLiked" , default ) ) . ReturnsAsync ( true ) ;
95
+
96
+ cut . Find ( "button" ) . Click ( ) ;
97
+
98
+ wasClicked . Should ( ) . BeFalse ( ) ;
99
+ }
29
100
}
30
101
}
0 commit comments