Files
Elternbeirat/Elternbeirat.Web.Tests/NavBuilderTests.cs
T

59 lines
1.6 KiB
C#

using Elternbeirat.Contracts;
using Elternbeirat.Web.Features.Layout;
namespace Elternbeirat.Web.Tests;
/// <summary>
/// Unit tests for the navigation builder. Pure logic, no PocketBase needed.
/// </summary>
public class NavBuilderTests
{
private static Page Page(string slug, string location, double order, string title) =>
new() { Slug = slug, Location = location, Order = order, Title = title };
[Fact]
public void Header_keeps_only_header_pages_ordered_by_order()
{
var pages = new[]
{
Page("board", "header", 2, "Vorstandsteam"),
Page("home", "header", 1, "Start"),
Page("imprint", "footer", 1, "Impressum"),
};
var header = NavBuilder.Header(pages);
header.Select(link => link.Title).ShouldBe(["Start", "Vorstandsteam"]);
}
[Fact]
public void Footer_keeps_only_footer_pages_ordered_by_order()
{
var pages = new[]
{
Page("privacy", "footer", 2, "Datenschutz"),
Page("imprint", "footer", 1, "Impressum"),
Page("home", "header", 1, "Start"),
};
var footer = NavBuilder.Footer(pages);
footer.Select(link => link.Title).ShouldBe(["Impressum", "Datenschutz"]);
}
[Fact]
public void Home_page_maps_to_root_every_other_slug_to_its_path()
{
var pages = new[]
{
Page("home", "header", 1, "Start"),
Page("board", "header", 2, "Vorstandsteam"),
};
var header = NavBuilder.Header(pages);
header[0].Href.ShouldBe("/");
header[1].Href.ShouldBe("/board");
}
}