Add home hero with intro and buttons from the body, next-event card and page tiles
This commit is contained in:
1 parent
b737f57ef7
commit
e51afeb34b
23 files changed
+1262
-65
No files matched your search
@@ -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");
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user