namespace ZB.MOM.WW.Theme.Tests; public class ThemeShellTests : TestContext { [Fact] public void Renders_product_nav_and_body() { var cut = RenderComponent(p => p .Add(x => x.Product, "OtOpcUa") .Add(x => x.Nav, (RenderFragment)(b => b.AddMarkupContent(0, "N"))) .AddChildContent("
BODY
")); Assert.NotNull(cut.Find(".side-rail .brand")); Assert.Contains("OtOpcUa", cut.Markup); Assert.NotNull(cut.Find(".side-rail .rail-link")); Assert.NotNull(cut.Find("main.page .pagebody")); } [Fact] public void Accent_sets_css_variable_on_shell_root() { var cut = RenderComponent(p => p .Add(x => x.Product, "ScadaBridge") .Add(x => x.Accent, "#2f855a")); var shell = cut.Find(".app-shell"); Assert.Contains("--accent: #2f855a", shell.GetAttribute("style")); } [Fact] public void No_accent_emits_no_style() { var cut = RenderComponent(p => p.Add(x => x.Product, "MXAccess Gateway")); Assert.False(cut.Find(".app-shell").HasAttribute("style")); } [Fact] public void RailFooter_renders_when_supplied() { var cut = RenderComponent(p => p .Add(x => x.Product, "OtOpcUa") .Add(x => x.RailFooter, (RenderFragment)(b => b.AddMarkupContent(0, "S")))); Assert.NotNull(cut.Find(".rail-foot .sess")); } }