Skip to content

Commit 54b940e

Browse files
committed
Added Like Tests
1 parent dea4f93 commit 54b940e

File tree

1 file changed

+71
-0
lines changed

1 file changed

+71
-0
lines changed

LinkDotNet.Blog.UnitTests/Web/Shared/LikeTests.cs

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,76 @@ public void ShouldDisplayLikes(int likes, string expectedText)
2626

2727
label.Should().Be(expectedText);
2828
}
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+
}
29100
}
30101
}

0 commit comments

Comments
 (0)