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,45 @@
|
||||
using Elternbeirat.Contracts;
|
||||
using Elternbeirat.Web.Features.Events;
|
||||
using Elternbeirat.Web.Shared;
|
||||
|
||||
namespace Elternbeirat.Web.Tests;
|
||||
|
||||
/// <summary>
|
||||
/// Unit tests for the "what is coming up?" rule and the Berlin day behind it. Pure
|
||||
/// logic, no PocketBase needed.
|
||||
/// </summary>
|
||||
public class UpcomingEventsTests
|
||||
{
|
||||
private static Event Event(string title, DateTime start) =>
|
||||
new() { Id = "test", Title = title, Start = start };
|
||||
|
||||
[Fact]
|
||||
public void Keeps_today_and_later_ordered_by_start()
|
||||
{
|
||||
var events = new[]
|
||||
{
|
||||
Event("Basar", new DateTime(2026, 11, 22, 9, 0, 0)),
|
||||
Event("Gestern", new DateTime(2026, 9, 30, 19, 30, 0)),
|
||||
Event("Heute früh", new DateTime(2026, 10, 1, 7, 0, 0)), // already begun, still today
|
||||
Event("Sitzung", new DateTime(2026, 10, 8, 19, 30, 0)),
|
||||
};
|
||||
|
||||
var upcoming = UpcomingEvents.From(events, new DateOnly(2026, 10, 1));
|
||||
|
||||
upcoming.Select(@event => @event.Title).ShouldBe(["Heute früh", "Sitzung", "Basar"]);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Nothing_upcoming_gives_an_empty_list() =>
|
||||
UpcomingEvents.From([Event("Vorbei", new DateTime(2026, 1, 1))], new DateOnly(2026, 10, 1))
|
||||
.ShouldBeEmpty();
|
||||
|
||||
[Fact]
|
||||
public void Berlin_day_starts_before_the_UTC_day()
|
||||
{
|
||||
// 22:30 UTC on 30 September is 00:30 on 1 October in Berlin (summer time).
|
||||
var time = new FixedTimeProvider(new DateTimeOffset(2026, 9, 30, 22, 30, 0, TimeSpan.Zero));
|
||||
|
||||
BerlinClock.Today(time).ShouldBe(new DateOnly(2026, 10, 1));
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user