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