Skip to content

Commit dfa563b

Browse files
Arnab-Developerlinkdotnet
authored andcommitted
Add icon
1 parent cdba0ae commit dfa563b

File tree

6 files changed

+88
-3
lines changed

6 files changed

+88
-3
lines changed

src/LinkDotNet.Blog.Web/Features/Components/ShortBlogPost.razor

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@
3434
</li>
3535
}
3636
<li class="read-time me-4">@BlogPost.ReadingTimeInMinutes minute read</li>
37-
@if (AppConfiguration.Value.UseMultiAuthorMode)
37+
@if (AppConfiguration.Value.UseMultiAuthorMode && BlogPost.AuthorName is not null)
3838
{
39-
<li class="me-4">@BlogPost.AuthorName</li>
39+
<li class="me-4"><i class="user-tie"></i> @BlogPost.AuthorName</li>
4040
}
4141
</ul>
4242
</div>

src/LinkDotNet.Blog.Web/Features/ShowBlogPost/ShowBlogPostPage.razor

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,9 @@ else if (BlogPost is not null)
5353
</div>
5454
<span class="read-time"></span>
5555
<span class="me-2">@BlogPost.ReadingTimeInMinutes minute read</span>
56-
@if (AppConfiguration.Value.UseMultiAuthorMode)
56+
@if (AppConfiguration.Value.UseMultiAuthorMode && BlogPost.AuthorName is not null)
5757
{
58+
<i class="user-tie"></i>
5859
<span class="me-2">@BlogPost.AuthorName</span>
5960
}
6061
<div class="d-flex align-items-center">

tests/LinkDotNet.Blog.IntegrationTests/Web/Features/Home/IndexTests.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ public async Task ShouldShowAuthorNameWhenUseMultiAuthorModeIsTrue()
155155

156156
cut.WaitForElement("li:contains('Test Author')");
157157
cut.FindAll("li:contains('Test Author')").ShouldHaveSingleItem();
158+
cut.FindAll("i.user-tie").ShouldHaveSingleItem();
158159
}
159160

160161
[Fact]
@@ -173,6 +174,23 @@ public async Task ShouldNotShowAuthorNameWhenUseMultiAuthorModeIsFalse()
173174
var func = () => cut.WaitForElement("li:contains('Test Author')");
174175
func.ShouldThrow<WaitForFailedException>();
175176
cut.FindAll("li:contains('Test Author')").ShouldBeEmpty();
177+
cut.FindAll("i.user-tie").ShouldBeEmpty();
178+
}
179+
180+
[Fact]
181+
public async Task ShouldNotShowAuthorNameWhenAuthorNameIsNull()
182+
{
183+
var publishedPost = new BlogPostBuilder().Build(); // Author name is null here.
184+
await Repository.StoreAsync(publishedPost);
185+
using var ctx = new BunitContext();
186+
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
187+
RegisterComponents(ctx, useMultiAuthorMode: true);
188+
var cut = ctx.Render<Index>();
189+
190+
var func = () => cut.WaitForElement("li:contains('Test Author')");
191+
func.ShouldThrow<WaitForFailedException>();
192+
cut.FindAll("li:contains('Test Author')").ShouldBeEmpty();
193+
cut.FindAll("i.user-tie").ShouldBeEmpty();
176194
}
177195

178196
private static (ApplicationConfiguration ApplicationConfiguration, Introduction Introduction)

tests/LinkDotNet.Blog.IntegrationTests/Web/Features/ShowBlogPost/ShowBlogPostPageTests.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@ public async Task ShouldShowAuthorNameWhenUseMultiAuthorModeIsTrue()
152152
p => p.Add(b => b.BlogPostId, blogPost.Id));
153153

154154
cut.FindAll("span:contains('Test Author')").ShouldHaveSingleItem();
155+
cut.FindAll("i.user-tie").ShouldHaveSingleItem();
155156
}
156157

157158
[Fact]
@@ -168,6 +169,24 @@ public async Task ShouldNotShowAuthorNameWhenUseMultiAuthorModeIsFalse()
168169
p => p.Add(b => b.BlogPostId, blogPost.Id));
169170

170171
cut.FindAll("span:contains('Test Author')").ShouldBeEmpty();
172+
cut.FindAll("i.user-tie").ShouldBeEmpty();
173+
}
174+
175+
[Fact]
176+
public async Task ShouldNotShowAuthorNameWhenAuthorNameIsNull()
177+
{
178+
using var ctx = new BunitContext();
179+
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
180+
ctx.AddAuthorization();
181+
RegisterComponents(ctx, useMultiAuthorMode: true);
182+
var blogPost = new BlogPostBuilder().IsPublished().Build(); // Author name is null here.
183+
await Repository.StoreAsync(blogPost);
184+
185+
var cut = ctx.Render<ShowBlogPostPage>(
186+
p => p.Add(b => b.BlogPostId, blogPost.Id));
187+
188+
cut.FindAll("span:contains('Test Author')").ShouldBeEmpty();
189+
cut.FindAll("i.user-tie").ShouldBeEmpty();
171190
}
172191

173192
private void RegisterComponents(BunitContext ctx, ILocalStorageService? localStorageService = null, bool useMultiAuthorMode = false)

tests/LinkDotNet.Blog.UnitTests/Web/Features/Components/ShortBlogPostTests.cs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,7 @@ public void ShouldShowAuthorNameWhenUseMultiAuthorModeIsTrue()
179179
var cut = Render<ShortBlogPost>(p => p.Add(c => c.BlogPost, blogPost));
180180

181181
cut.FindAll("li:contains('Test Author')").ShouldHaveSingleItem();
182+
cut.FindAll("i.user-tie").ShouldHaveSingleItem();
182183
}
183184

184185
[Fact]
@@ -205,5 +206,32 @@ public void ShouldNotShowAuthorNameWhenUseMultiAuthorModeIsFalse()
205206
var cut = Render<ShortBlogPost>(p => p.Add(c => c.BlogPost, blogPost));
206207

207208
cut.FindAll("li:contains('Test Author')").ShouldBeEmpty();
209+
cut.FindAll("i.user-tie").ShouldBeEmpty();
210+
}
211+
212+
[Fact]
213+
public void ShouldNotShowAuthorNameWhenAuthorNameIsNull()
214+
{
215+
Services.AddScoped(_ => Substitute.For<IBookmarkService>());
216+
var options = Substitute.For<IOptions<ApplicationConfiguration>>();
217+
218+
options.Value.Returns(new ApplicationConfiguration()
219+
{
220+
UseMultiAuthorMode = true,
221+
BlogName = "Test",
222+
ConnectionString = "Test",
223+
DatabaseName = "Test"
224+
});
225+
226+
Services.AddScoped(_ => options);
227+
228+
var blogPost = new BlogPostBuilder()
229+
.IsPublished(true)
230+
.Build(); // Author name is null here.
231+
232+
var cut = Render<ShortBlogPost>(p => p.Add(c => c.BlogPost, blogPost));
233+
234+
cut.FindAll("li:contains('Test Author')").ShouldBeEmpty();
235+
cut.FindAll("i.user-tie").ShouldBeEmpty();
208236
}
209237
}

tests/LinkDotNet.Blog.UnitTests/Web/Features/ShowBlogPost/ShowBlogPostPageTests.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@ public void ShouldShowAuthorNameWhenUseMultiAuthorModeIsTrue()
181181
p => p.Add(s => s.BlogPostId, "1"));
182182

183183
cut.FindAll("span:contains('Test Author')").ShouldHaveSingleItem();
184+
cut.FindAll("i.user-tie").ShouldHaveSingleItem();
184185
}
185186

186187
[Fact]
@@ -199,6 +200,24 @@ public void ShouldNotShowAuthorNameWhenUseMultiAuthorModeIsFalse()
199200
p => p.Add(s => s.BlogPostId, "1"));
200201

201202
cut.FindAll("span:contains('Test Author')").ShouldBeEmpty();
203+
cut.FindAll("i.user-tie").ShouldBeEmpty();
204+
}
205+
206+
[Fact]
207+
public void ShouldNotShowAuthorNameWhenAuthorNameIsNull()
208+
{
209+
var repositoryMock = Substitute.For<IRepository<BlogPost>>();
210+
var blogPost = new BlogPostBuilder().Build(); // Author name is null here.
211+
blogPost.Id = "1";
212+
repositoryMock.GetByIdAsync("1").Returns(blogPost);
213+
Services.AddScoped(_ => repositoryMock);
214+
Services.AddScoped(_ => Options.Create(new ApplicationConfigurationBuilder().WithUseMultiAuthorMode(true).Build()));
215+
216+
var cut = Render<ShowBlogPostPage>(
217+
p => p.Add(s => s.BlogPostId, "1"));
218+
219+
cut.FindAll("span:contains('Test Author')").ShouldBeEmpty();
220+
cut.FindAll("i.user-tie").ShouldBeEmpty();
202221
}
203222

204223
private class PageTitleStub : ComponentBase

0 commit comments

Comments
 (0)