diff --git a/src/LinkDotNet.Blog.Web/Features/Archive/ArchivePage.razor b/src/LinkDotNet.Blog.Web/Features/Archive/ArchivePage.razor index c65e2b6c..4ffc6c5d 100644 --- a/src/LinkDotNet.Blog.Web/Features/Archive/ArchivePage.razor +++ b/src/LinkDotNet.Blog.Web/Features/Archive/ArchivePage.razor @@ -7,42 +7,57 @@
-

Archive (@blogPostCount posts)

+

Archive (@blogPostCount posts)

- @if (blogPostsPerYear is null) - { - - } - else - { - @foreach (var yearGroup in blogPostsPerYear) - { -

@yearGroup.Key

- - } - } + @if (blogPostsPerYear is null) + { + + } + else + { +
+ @foreach (var yearGroup in blogPostsPerYear) + { +
+

+ +

+
+
+
    + @foreach (var blogPost in yearGroup.OrderByDescending(b => b.UpdatedDate)) + { +
  • + @blogPost.Title + (@blogPost.UpdatedDate.ToString("MMM dd, yyyy")) +
  • + } +
+
+
+
+ } +
+ }
@code { - private IReadOnlyCollection> blogPostsPerYear; - private int blogPostCount; +private IReadOnlyCollection> blogPostsPerYear; +private int blogPostCount; - protected override async Task OnInitializedAsync() - { - var blogPosts = await Repository.GetAllByProjectionAsync( - p => new BlogPostPerYear(p.Id, p.Slug, p.Title, p.UpdatedDate), - p => p.IsPublished); - blogPostCount = blogPosts.Count; - blogPostsPerYear = blogPosts - .GroupBy(r => r.UpdatedDate.Year) - .OrderByDescending(r => r.Key) - .ToImmutableArray(); - } +protected override async Task OnInitializedAsync() +{ +var blogPosts = await Repository.GetAllByProjectionAsync( +p => new BlogPostPerYear(p.Id, p.Slug, p.Title, p.UpdatedDate), +p => p.IsPublished); +blogPostCount = blogPosts.Count; +blogPostsPerYear = blogPosts +.GroupBy(r => r.UpdatedDate.Year) +.OrderByDescending(r => r.Key) +.ToImmutableArray(); +} - private sealed record BlogPostPerYear(string Id, string Slug, string Title, DateTime UpdatedDate); +private sealed record BlogPostPerYear(string Id, string Slug, string Title, DateTime UpdatedDate); } diff --git a/tests/LinkDotNet.Blog.IntegrationTests/Web/Features/Archive/ArchivePageTests.cs b/tests/LinkDotNet.Blog.IntegrationTests/Web/Features/Archive/ArchivePageTests.cs index 5c8c28a4..2c7dc938 100644 --- a/tests/LinkDotNet.Blog.IntegrationTests/Web/Features/Archive/ArchivePageTests.cs +++ b/tests/LinkDotNet.Blog.IntegrationTests/Web/Features/Archive/ArchivePageTests.cs @@ -29,13 +29,13 @@ public async Task ShouldDisplayAllBlogPosts() cut.WaitForElements("h2"); var yearHeader = cut.FindAll("h2"); yearHeader.Should().HaveCount(2); - yearHeader[0].TextContent.Should().Be("2022"); - yearHeader[1].TextContent.Should().Be("2021"); + yearHeader[0].TextContent.Should().Contain("2022"); + yearHeader[1].TextContent.Should().Contain("2021"); var entries = cut.FindAll("li"); entries.Should().HaveCount(3); - entries[0].TextContent.Should().Be("Blog Post 3"); - entries[1].TextContent.Should().Be("Blog Post 2"); - entries[2].TextContent.Should().Be("Blog Post 1"); + entries[0].TextContent.Should().Contain("Blog Post 3"); + entries[1].TextContent.Should().Contain("Blog Post 2"); + entries[2].TextContent.Should().Contain("Blog Post 1"); } [Fact]