Skip to content

Commit 2dc2289

Browse files
committed
Added more tests
1 parent 0407783 commit 2dc2289

File tree

2 files changed

+72
-1
lines changed

2 files changed

+72
-1
lines changed

src/LinkDotNet.Blog.Web/Features/Home/Index.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
<div class="content px-4 my-2">
2828
@for (var i = 0; i < currentPage.Count; i++)
2929
{
30-
<ShortBlogPost BlogPost="currentPage[i]" UseAlternativeStyle="@(i % 2 != 0)"></ShortBlogPost>
30+
<ShortBlogPost BlogPost="currentPage[i]" UseAlternativeStyle="@(i % 2 != 0)" LazyLoadPreviewImage="i > 3"></ShortBlogPost>
3131
}
3232
</div>
3333
<BlogPostNavigation PageList="@currentPage"></BlogPostNavigation>
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
using System.Linq;
2+
using AngleSharp.Dom;
3+
using AngleSharp.Html.Dom;
4+
using AngleSharpWrappers;
5+
using Bunit;
6+
using LinkDotNet.Blog.Web.Features.Components;
7+
8+
namespace LinkDotNet.Blog.UnitTests.Web.Features.Components;
9+
10+
public class PreviewImageTests : TestContext
11+
{
12+
[Fact]
13+
public void ShouldOfferImageWhenProvided()
14+
{
15+
var cut = RenderComponent<PreviewImage>(ps => ps
16+
.Add(p => p.PreviewImageUrl, "http://image.png/")
17+
.Add(p => p.PreviewImageUrlFallback, "http://fallback.png/"));
18+
19+
var picture = cut.Find("picture");
20+
21+
var source = picture.Children[0] as IHtmlSourceElement;
22+
source.Should().NotBeNull();
23+
source.SourceSet.Should().Be("http://image.png/");
24+
var img = picture.Children[1] as IHtmlImageElement;
25+
img.Should().NotBeNull();
26+
img.Source.Should().Be("http://fallback.png/");
27+
}
28+
29+
[Fact]
30+
public void ShouldOfferOnlyImageWhenNoFallbackProvided()
31+
{
32+
var cut = RenderComponent<PreviewImage>(ps => ps
33+
.Add(p => p.PreviewImageUrl, "http://image.png/"));
34+
35+
var image = cut.Find("img").Unwrap() as IHtmlImageElement;
36+
37+
image.Should().NotBeNull();
38+
image.Source.Should().Be("http://image.png/");
39+
}
40+
41+
[Theory]
42+
[InlineData(true, "lazy")]
43+
[InlineData(false, "eager")]
44+
public void ShouldSetLazyLoadBehavior(bool lazyLoad, string expectedLazy)
45+
{
46+
var cut = RenderComponent<PreviewImage>(ps => ps
47+
.Add(p => p.PreviewImageUrl, "http://image.png/")
48+
.Add(p => p.PreviewImageUrlFallback, "http://fallback.png/")
49+
.Add(p => p.LazyLoadImage, lazyLoad));
50+
51+
var picture = cut.Find("picture");
52+
53+
var img = picture.Children[1] as IHtmlImageElement;
54+
img.Should().NotBeNull();
55+
img.Attributes.FirstOrDefault(a => a.Name == "loading").Value.Should().Be(expectedLazy);
56+
}
57+
58+
[Theory]
59+
[InlineData(true, "lazy")]
60+
[InlineData(false, "eager")]
61+
public void ShouldSetLazyLoadBehaviorNoFallback(bool lazyLoad, string expectedLazy)
62+
{
63+
var cut = RenderComponent<PreviewImage>(ps => ps
64+
.Add(p => p.PreviewImageUrl, "http://image.png/")
65+
.Add(p => p.LazyLoadImage, lazyLoad));
66+
67+
var image = cut.Find("img").Unwrap() as IHtmlImageElement;
68+
69+
image.Attributes.FirstOrDefault(a => a.Name == "loading").Value.Should().Be(expectedLazy);
70+
}
71+
}

0 commit comments

Comments
 (0)