using Bunit; using Microsoft.AspNetCore.Components; using Prefab.Web.Client.Components.Shared; using Shouldly; namespace Prefab.Tests.Web.Client.Components.Shared; [Trait(TraitName.Category, TraitCategory.Unit)] public sealed class CardGridShould : BunitContext { [Fact] public void RenderGridLayoutWithItems() { var cut = Render(parameters => { parameters.Add(p => p.View, "grid"); parameters.Add(p => p.ChildContent, builder => { builder.OpenComponent(0); builder.AddAttribute(1, "ChildContent", (RenderFragment)(child => { child.OpenElement(0, "div"); child.AddAttribute(1, "class", "fake-card-1"); child.CloseElement(); })); builder.CloseComponent(); builder.OpenComponent(2); builder.AddAttribute(3, "ChildContent", (RenderFragment)(child => { child.OpenElement(0, "div"); child.AddAttribute(1, "class", "fake-card-2"); child.CloseElement(); })); builder.CloseComponent(); }); }); var container = cut.Find($".{TemplateCss.ProductsViewList}"); container.ClassList.ShouldContain(TemplateCss.ProductsList); container.ClassList.ShouldContain(TemplateCss.ProductsListLayoutGrid); var items = cut.FindAll($".{TemplateCss.ProductsListItem}"); items.Count.ShouldBe(2); items[0].QuerySelector(".fake-card-1").ShouldNotBeNull(); items[1].QuerySelector(".fake-card-2").ShouldNotBeNull(); } [Fact] public void RenderListLayoutModifier() { var cut = Render(parameters => { parameters.Add(p => p.View, "list"); parameters.Add(p => p.ChildContent, builder => { builder.OpenComponent(0); builder.AddAttribute(1, "ChildContent", (RenderFragment)(child => { child.OpenElement(0, "div"); child.AddAttribute(1, "class", "fake-card"); child.CloseElement(); })); builder.CloseComponent(); }); }); var container = cut.Find($".{TemplateCss.ProductsViewList}"); container.ClassList.ShouldContain(TemplateCss.ProductsListLayoutList); } }