Add home hero with intro and buttons from the body, next-event card and page tiles

This commit is contained in:
tleininger committed 2026-10-01 14:05:25 +02:00
1 parent b737f57ef7
commit e51afeb34b
23 files changed
+1262 -65

No files matched your search

+67
View File
@@ -0,0 +1,67 @@
using Elternbeirat.Web.Features.Home;
namespace Elternbeirat.Web.Tests;
/// <summary>
/// Unit tests for taking the home page's body apart into heading, intro and
/// buttons. Pure logic, no PocketBase needed.
/// </summary>
public class HomeIntroTests
{
[Fact]
public void Body_splits_into_title_intro_and_buttons()
{
var intro = HomeIntro.Parse(
"# Willkommen\n\nSchön, dass Sie da sind.\n\n[Kommende Termine](/events)\n[Kontakt aufnehmen](/contact)");
intro.Title.ShouldBe("Willkommen");
intro.IntroHtml.ShouldBe("<p>Schön, dass Sie da sind.</p>\n");
intro.Links.ShouldBe(
[
new HomeLink("/events", "Kommende Termine"),
new HomeLink("/contact", "Kontakt aufnehmen"),
]);
}
[Theory]
[InlineData(null)]
[InlineData("")]
[InlineData(" ")]
public void Empty_body_gives_the_fallback(string? markdown) =>
HomeIntro.Parse(markdown).ShouldBe(HomeIntro.Fallback);
[Fact]
public void Body_without_heading_keeps_the_fallback_title_and_all_text()
{
var intro = HomeIntro.Parse("Nur ein Absatz.");
intro.Title.ShouldBe(HomeIntro.FallbackTitle);
intro.IntroHtml.ShouldContain("Nur ein Absatz.");
intro.Links.ShouldBeEmpty();
}
[Fact]
public void Last_paragraph_with_other_text_stays_intro()
{
// "oder" would get lost in a button row, so the paragraph stays text.
var intro = HomeIntro.Parse("# Hallo\n\n[Termine](/events) oder [Kontakt](/contact)");
intro.Links.ShouldBeEmpty();
intro.IntroHtml.ShouldContain("href=\"/events\"");
}
[Fact]
public void Link_paragraph_that_is_not_last_stays_intro()
{
var intro = HomeIntro.Parse("# Hallo\n\n[Termine](/events)\n\nSchlusssatz.");
intro.Links.ShouldBeEmpty();
intro.IntroHtml.ShouldContain("Schlusssatz.");
}
[Fact]
public void Heading_markup_is_reduced_to_its_text()
{
HomeIntro.Parse("# Willkommen beim **Elternbeirat**").Title.ShouldBe("Willkommen beim Elternbeirat");
}
}