using Bunit; using Microsoft.AspNetCore.Components; using Xunit; namespace Radzen.Blazor.Tests { public class SplitButtonTests { [Fact] public void SplitButton_Renders_StyleParameter() { using var ctx = new TestContext(); var component = ctx.RenderComponent(); var value = "width:20px"; component.SetParametersAndRender(parameters => parameters.Add(p => p.Style, value)); Assert.Contains(@$"style=""{value}""", component.Markup); } [Fact] public void SplitButton_Renders_TextParameter() { using var ctx = new TestContext(); var component = ctx.RenderComponent(); var text = "Test"; component.SetParametersAndRender(parameters => parameters.Add(p => p.Text, text)); Assert.Contains(@$"{text}", component.Markup); } [Fact] public void SplitButton_Renders_IconParameter() { using var ctx = new TestContext(); var component = ctx.RenderComponent(); var icon = "account_circle"; component.SetParametersAndRender(parameters => parameters.Add(p => p.Icon, icon)); Assert.Contains(@$"{icon}", component.Markup); } [Fact] public void SplitButton_Renders_IconAndTextParameters() { using var ctx = new TestContext(); var component = ctx.RenderComponent(); var text = "Test"; var icon = "account_circle"; component.SetParametersAndRender(parameters => { parameters.Add(p => p.Text, text); parameters.Add(p => p.Icon, icon); }); Assert.Contains(@$"{icon}", component.Markup); Assert.Contains(@$"{text}", component.Markup); } [Fact] public void SplitButton_Renders_ImageParameter() { using var ctx = new TestContext(); var component = ctx.RenderComponent(); var image = "test.png"; component.SetParametersAndRender(parameters => parameters.Add(p => p.Image, image)); Assert.Contains(@$"", component.Markup); } [Fact] public void SplitButton_Renders_ImageAndTextParameters() { using var ctx = new TestContext(); var component = ctx.RenderComponent(); var text = "Test"; var image = "test.png"; component.SetParametersAndRender(parameters => { parameters.Add(p => p.Text, text); parameters.Add(p => p.Image, image); parameters.Add(p => p.ImageAlternateText, text); }); Assert.Contains(@$"", component.Markup); Assert.Contains(@$"{text}", component.Markup); } [Fact] public void SplitButton_Renders_ButtonContent() { using var ctx = new TestContext(); RenderFragment buttonContent = (builder) => builder.AddMarkupContent(0, "Custom button content"); var text = "Test"; var component = ctx.RenderComponent(parameters => parameters .Add(p => p.ButtonContent, buttonContent) .Add(p => p.Text, text)); Assert.Contains(@$"Custom button content", component.Markup); Assert.DoesNotContain(@$"{text}", component.Markup); } [Fact] public void SplitButton_Renders_DisabledParameter() { using var ctx = new TestContext(); var component = ctx.RenderComponent(); component.SetParametersAndRender(parameters => parameters.Add(p => p.Disabled, true)); Assert.Contains(@$"rz-state-disabled", component.Markup); } [Fact] public void SplitButton_Renders_UnmatchedParameter() { using var ctx = new TestContext(); var component = ctx.RenderComponent(); component.SetParametersAndRender(parameters => parameters.AddUnmatched("autofocus", "")); Assert.Contains(@$"autofocus", component.Markup); } [Fact] public void SplitButton_Raises_ClickEvent() { using var ctx = new TestContext(); ctx.JSInterop.Mode = JSRuntimeMode.Loose; ctx.JSInterop.SetupModule("_content/Radzen.Blazor/Radzen.Blazor.js"); var component = ctx.RenderComponent(); var clicked = false; component.SetParametersAndRender(parameters => parameters.Add(p => p.Click, args => { clicked = true; })); component.Find("button").Click(); Assert.True(clicked); } } }