Skip to content

Commit 9cd812b

Browse files
committed
Use fallback image for Og:Image
1 parent 1df8d9f commit 9cd812b

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ else
1616
{
1717
<PageTitle>@BlogPost.Title</PageTitle>
1818
<OgData Title="@BlogPost.Title"
19-
AbsolutePreviewImageUrl="@BlogPost.PreviewImageUrl"
19+
AbsolutePreviewImageUrl="@OgDataImage"
2020
Description="@(Markdown.ToPlainText(BlogPost.ShortDescription))"
2121
Keywords="@Tags"></OgData>
2222
<div class="blog-outer-box">
@@ -53,6 +53,8 @@ else
5353
private string Tags => BlogPost?.Tags != null
5454
? string.Join(",", BlogPost.Tags.Select(b => b.Content))
5555
: null;
56+
57+
private string OgDataImage => BlogPost.PreviewImageUrlFallback ?? BlogPost.PreviewImageUrl;
5658

5759
private BlogPost BlogPost { get; set; }
5860

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

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,4 +61,31 @@ public void ShouldSetTitleToTag()
6161
var pageTitle = Render(pageTitleStub.Instance.Parameters.Get(p => p.ChildContent));
6262
pageTitle.Markup.Should().Be("Title");
6363
}
64+
65+
[Theory]
66+
[InlineData("url1", null, "url1")]
67+
[InlineData("url1", "url2", "url2")]
68+
public void ShouldUseFallbackAsOgDataIfAvailable(string preview, string fallback, string expected)
69+
{
70+
JSInterop.Mode = JSRuntimeMode.Loose;
71+
var repositoryMock = new Mock<IRepository<BlogPost>>();
72+
var blogPost = new BlogPostBuilder()
73+
.WithPreviewImageUrl(preview)
74+
.WithPreviewImageUrlFallback(fallback)
75+
.Build();
76+
repositoryMock.Setup(r => r.GetByIdAsync("1")).ReturnsAsync(blogPost);
77+
Services.AddScoped(_ => repositoryMock.Object);
78+
Services.AddScoped(_ => Mock.Of<IUserRecordService>());
79+
Services.AddScoped(_ => Mock.Of<IToastService>());
80+
Services.AddScoped(_ => Mock.Of<AppConfiguration>());
81+
this.AddTestAuthorization();
82+
ComponentFactories.AddStub<PageTitle>();
83+
ComponentFactories.AddStub<Like>();
84+
ComponentFactories.AddStub<CommentSection>();
85+
86+
var cut = RenderComponent<ShowBlogPostPage>(
87+
p => p.Add(s => s.BlogPostId, "1"));
88+
89+
cut.FindComponent<OgData>().Instance.AbsolutePreviewImageUrl.Should().Be(expected);
90+
}
6491
}

0 commit comments

Comments
 (0)