more tests added

This commit is contained in:
Vladimir Enchev
2025-10-29 16:07:47 +02:00
parent f90951add1
commit 36f1dfe2e0
9 changed files with 1047 additions and 1 deletions

View File

@@ -1,9 +1,74 @@
using Xunit;
using Bunit;
using Xunit;
using System.Collections.Generic;
namespace Radzen.Blazor.Tests
{
public class AutoCompleteTests
{
[Fact]
public void AutoComplete_Renders_WithClassName()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
var component = ctx.RenderComponent<RadzenAutoComplete>();
Assert.Contains(@"rz-autocomplete", component.Markup);
}
[Fact]
public void AutoComplete_Renders_InputElement()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
var component = ctx.RenderComponent<RadzenAutoComplete>();
Assert.Contains("type=\"text\"", component.Markup);
Assert.Contains("rz-inputtext", component.Markup);
}
[Fact]
public void AutoComplete_Renders_Disabled()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
var component = ctx.RenderComponent<RadzenAutoComplete>(parameters =>
{
parameters.Add(p => p.Disabled, true);
});
Assert.Contains("disabled", component.Markup);
Assert.Contains("rz-state-disabled", component.Markup);
}
[Fact]
public void AutoComplete_Renders_Placeholder()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
var component = ctx.RenderComponent<RadzenAutoComplete>(parameters =>
{
parameters.Add(p => p.Placeholder, "Type to search...");
});
Assert.Contains("placeholder=\"Type to search...\"", component.Markup);
}
[Fact]
public void AutoComplete_Renders_WithData()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
var data = new List<string> { "Apple", "Banana", "Cherry" };
var component = ctx.RenderComponent<RadzenAutoComplete>(parameters =>
{
parameters.Add(p => p.Data, data);
});
Assert.Contains("rz-autocomplete-panel", component.Markup);
}
[Fact]
public void AutoComplete_Enum_Converts_To_Attr_Value()
{

View File

@@ -0,0 +1,168 @@
using Bunit;
using Xunit;
using System.Collections.Generic;
namespace Radzen.Blazor.Tests
{
public class CheckBoxListTests
{
class Item
{
public int Id { get; set; }
public string Name { get; set; }
public bool Disabled { get; set; }
}
[Fact]
public void CheckBoxList_Renders_WithClassName()
{
using var ctx = new TestContext();
var component = ctx.RenderComponent<RadzenCheckBoxList<int>>();
Assert.Contains(@"rz-checkbox-list", component.Markup);
}
[Fact]
public void CheckBoxList_Renders_WithData()
{
using var ctx = new TestContext();
var data = new List<string> { "Option 1", "Option 2", "Option 3" };
var component = ctx.RenderComponent<RadzenCheckBoxList<string>>(parameters =>
{
parameters.Add(p => p.Data, data);
});
Assert.Contains("Option 1", component.Markup);
Assert.Contains("Option 2", component.Markup);
Assert.Contains("Option 3", component.Markup);
}
[Fact]
public void CheckBoxList_Renders_WithCustomTextValueProperties()
{
using var ctx = new TestContext();
var data = new List<Item>
{
new Item { Id = 1, Name = "First" },
new Item { Id = 2, Name = "Second" }
};
var component = ctx.RenderComponent<RadzenCheckBoxList<int>>(parameters =>
{
parameters.Add(p => p.Data, data);
parameters.Add(p => p.TextProperty, "Name");
parameters.Add(p => p.ValueProperty, "Id");
});
Assert.Contains("First", component.Markup);
Assert.Contains("Second", component.Markup);
}
[Fact]
public void CheckBoxList_Renders_Orientation_Horizontal()
{
using var ctx = new TestContext();
var component = ctx.RenderComponent<RadzenCheckBoxList<int>>(parameters =>
{
parameters.Add(p => p.Orientation, Orientation.Horizontal);
});
Assert.Contains("rz-flex-row", component.Markup);
}
[Fact]
public void CheckBoxList_Renders_Orientation_Vertical()
{
using var ctx = new TestContext();
var component = ctx.RenderComponent<RadzenCheckBoxList<int>>(parameters =>
{
parameters.Add(p => p.Orientation, Orientation.Vertical);
});
Assert.Contains("rz-flex-column", component.Markup);
}
[Fact]
public void CheckBoxList_Renders_Disabled()
{
using var ctx = new TestContext();
var component = ctx.RenderComponent<RadzenCheckBoxList<int>>(parameters =>
{
parameters.Add(p => p.Disabled, true);
});
Assert.Contains("disabled", component.Markup);
Assert.Contains("rz-state-disabled", component.Markup);
}
[Fact]
public void CheckBoxList_Renders_AllowSelectAll()
{
using var ctx = new TestContext();
var data = new List<string> { "Option 1", "Option 2" };
var component = ctx.RenderComponent<RadzenCheckBoxList<string>>(parameters =>
{
parameters.Add(p => p.AllowSelectAll, true);
parameters.Add(p => p.Data, data);
});
Assert.Contains("rz-multiselect-header", component.Markup);
}
[Fact]
public void CheckBoxList_Renders_SelectAllText()
{
using var ctx = new TestContext();
var data = new List<string> { "Option 1", "Option 2" };
var component = ctx.RenderComponent<RadzenCheckBoxList<string>>(parameters =>
{
parameters.Add(p => p.AllowSelectAll, true);
parameters.Add(p => p.SelectAllText, "Select All Options");
parameters.Add(p => p.Data, data);
});
Assert.Contains("Select All Options", component.Markup);
}
[Fact]
public void CheckBoxList_Renders_CheckboxInputs()
{
using var ctx = new TestContext();
var data = new List<string> { "Option 1", "Option 2" };
var component = ctx.RenderComponent<RadzenCheckBoxList<string>>(parameters =>
{
parameters.Add(p => p.Data, data);
});
Assert.Contains("type=\"checkbox\"", component.Markup);
Assert.Contains("rz-chkbox", component.Markup);
}
[Fact]
public void CheckBoxList_Renders_DisabledItems()
{
using var ctx = new TestContext();
var data = new List<Item>
{
new Item { Id = 1, Name = "Enabled", Disabled = false },
new Item { Id = 2, Name = "Disabled", Disabled = true }
};
var component = ctx.RenderComponent<RadzenCheckBoxList<int>>(parameters =>
{
parameters.Add(p => p.Data, data);
parameters.Add(p => p.TextProperty, "Name");
parameters.Add(p => p.ValueProperty, "Id");
parameters.Add(p => p.DisabledProperty, "Disabled");
});
Assert.Contains("Enabled", component.Markup);
Assert.Contains("Disabled", component.Markup);
}
}
}

View File

@@ -0,0 +1,148 @@
using Bunit;
using Xunit;
using System.Collections.Generic;
namespace Radzen.Blazor.Tests
{
public class DropDownDataGridTests
{
class Customer
{
public int Id { get; set; }
public string CompanyName { get; set; }
public string ContactName { get; set; }
}
[Fact]
public void DropDownDataGrid_Renders_WithClassName()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
var component = ctx.RenderComponent<RadzenDropDownDataGrid<int>>();
Assert.Contains(@"rz-dropdown", component.Markup);
}
[Fact]
public void DropDownDataGrid_Renders_DropdownTrigger()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
var component = ctx.RenderComponent<RadzenDropDownDataGrid<int>>();
Assert.Contains("rz-dropdown-trigger", component.Markup);
Assert.Contains("rzi-chevron-down", component.Markup);
}
[Fact]
public void DropDownDataGrid_Renders_WithData()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
var data = new List<string> { "Item1", "Item2", "Item3" };
var component = ctx.RenderComponent<RadzenDropDownDataGrid<string>>(parameters =>
{
parameters.Add(p => p.Data, data);
});
Assert.Contains("rz-lookup-panel", component.Markup);
}
[Fact]
public void DropDownDataGrid_Renders_WithCustomTextProperty()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
var data = new List<Customer>
{
new Customer { Id = 1, CompanyName = "Acme Corp" }
};
var component = ctx.RenderComponent<RadzenDropDownDataGrid<int>>(parameters =>
{
parameters.Add(p => p.Data, data);
parameters.Add(p => p.TextProperty, "CompanyName");
parameters.Add(p => p.ValueProperty, "Id");
});
Assert.Contains("rz-lookup-panel", component.Markup);
}
[Fact]
public void DropDownDataGrid_Renders_AllowFiltering()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
var data = new List<string> { "Item1", "Item2" };
var component = ctx.RenderComponent<RadzenDropDownDataGrid<string>>(parameters =>
{
parameters.Add(p => p.AllowFiltering, true);
parameters.Add(p => p.Data, data);
});
Assert.Contains("rz-lookup-search", component.Markup);
}
[Fact]
public void DropDownDataGrid_Renders_Placeholder()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
var component = ctx.RenderComponent<RadzenDropDownDataGrid<int>>(parameters =>
{
parameters.Add(p => p.Placeholder, "Select an item");
});
Assert.Contains("Select an item", component.Markup);
Assert.Contains("rz-placeholder", component.Markup);
}
[Fact]
public void DropDownDataGrid_Renders_AllowClear()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
var data = new List<string> { "Item1" };
var component = ctx.RenderComponent<RadzenDropDownDataGrid<string>>(parameters =>
{
parameters.Add(p => p.AllowClear, true);
parameters.Add(p => p.Data, data);
parameters.Add(p => p.Value, "Item1");
});
Assert.Contains("rz-dropdown-clear-icon", component.Markup);
}
[Fact]
public void DropDownDataGrid_Renders_Disabled()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
var component = ctx.RenderComponent<RadzenDropDownDataGrid<int>>(parameters =>
{
parameters.Add(p => p.Disabled, true);
});
Assert.Contains("disabled", component.Markup);
Assert.Contains("rz-state-disabled", component.Markup);
}
[Fact]
public void DropDownDataGrid_Renders_Multiple_WithChips()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
var component = ctx.RenderComponent<RadzenDropDownDataGrid<IEnumerable<int>>>(parameters =>
{
parameters.Add(p => p.Multiple, true);
parameters.Add(p => p.Chips, true);
});
Assert.Contains("rz-multiselect-panel", component.Markup);
}
}
}

View File

@@ -686,5 +686,58 @@ namespace Radzen.Blazor.Tests
public IEnumerator<T> GetEnumerator() => _items.GetEnumerator();
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
}
[Fact]
public void DropDown_Renders_Placeholder()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
var component = ctx.RenderComponent<RadzenDropDown<int>>(parameters =>
{
parameters.Add(p => p.Placeholder, "Select an option");
});
Assert.Contains("Select an option", component.Markup);
Assert.Contains("rz-placeholder", component.Markup);
}
[Fact]
public void DropDown_Renders_AllowClear_WithValue()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
var data = new[] { new DataItem { Text = "Item 1", Id = 1 } };
var component = ctx.RenderComponent<RadzenDropDown<int>>(parameters =>
{
parameters.Add(p => p.AllowClear, true);
parameters.Add(p => p.Data, data);
parameters.Add(p => p.TextProperty, nameof(DataItem.Text));
parameters.Add(p => p.ValueProperty, nameof(DataItem.Id));
parameters.Add(p => p.Value, 1);
});
Assert.Contains("rz-dropdown-clear-icon", component.Markup);
}
[Fact]
public void DropDown_DoesNotRender_AllowClear_WhenNotAllowed()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
var data = new[] { new DataItem { Text = "Item 1", Id = 1 } };
var component = ctx.RenderComponent<RadzenDropDown<int>>(parameters =>
{
parameters.Add(p => p.AllowClear, false);
parameters.Add(p => p.Data, data);
parameters.Add(p => p.TextProperty, nameof(DataItem.Text));
parameters.Add(p => p.ValueProperty, nameof(DataItem.Id));
parameters.Add(p => p.Value, 1);
});
Assert.DoesNotContain("rz-dropdown-clear-icon", component.Markup);
}
}
}

View File

@@ -0,0 +1,182 @@
using Bunit;
using Xunit;
namespace Radzen.Blazor.Tests
{
public class FileInputTests
{
[Fact]
public void FileInput_Renders_WithClassName()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
var component = ctx.RenderComponent<RadzenFileInput<string>>();
Assert.Contains(@"rz-fileupload", component.Markup);
}
[Fact]
public void FileInput_Renders_ChooseButton()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
var component = ctx.RenderComponent<RadzenFileInput<string>>();
Assert.Contains("rz-fileupload-choose", component.Markup);
Assert.Contains("rz-button", component.Markup);
}
[Fact]
public void FileInput_Renders_ChooseText()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
var component = ctx.RenderComponent<RadzenFileInput<string>>(parameters =>
{
parameters.Add(p => p.ChooseText, "Select File");
});
Assert.Contains("Select File", component.Markup);
}
[Fact]
public void FileInput_Renders_DefaultChooseText()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
var component = ctx.RenderComponent<RadzenFileInput<string>>();
Assert.Contains("Choose", component.Markup);
}
[Fact]
public void FileInput_Renders_Disabled()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
var component = ctx.RenderComponent<RadzenFileInput<string>>(parameters =>
{
parameters.Add(p => p.Disabled, true);
});
Assert.Contains("rz-state-disabled", component.Markup);
Assert.Contains("disabled", component.Markup);
}
[Fact]
public void FileInput_Renders_Accept()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
var component = ctx.RenderComponent<RadzenFileInput<string>>(parameters =>
{
parameters.Add(p => p.Accept, "application/pdf");
});
Assert.Contains("accept=\"application/pdf\"", component.Markup);
}
[Fact]
public void FileInput_Renders_DefaultAccept()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
var component = ctx.RenderComponent<RadzenFileInput<string>>();
Assert.Contains("accept=\"image/*\"", component.Markup);
}
[Fact]
public void FileInput_Renders_FileInputElement()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
var component = ctx.RenderComponent<RadzenFileInput<string>>();
Assert.Contains("type=\"file\"", component.Markup);
}
[Fact]
public void FileInput_Renders_Title_WhenSet()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
var component = ctx.RenderComponent<RadzenFileInput<string>>(parameters =>
{
parameters.Add(p => p.Title, "MyDocument.pdf");
parameters.Add(p => p.Value, "data:application/pdf;base64,test");
});
Assert.Contains("MyDocument.pdf", component.Markup);
}
[Fact]
public void FileInput_Renders_FileName_WhenTitleNotSet()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
var component = ctx.RenderComponent<RadzenFileInput<string>>(parameters =>
{
parameters.Add(p => p.FileName, "document.pdf");
parameters.Add(p => p.Value, "data:application/pdf;base64,test");
});
Assert.Contains("document.pdf", component.Markup);
}
[Fact]
public void FileInput_Renders_DeleteButton_WhenValueSet()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
var component = ctx.RenderComponent<RadzenFileInput<string>>(parameters =>
{
parameters.Add(p => p.Value, "data:text/plain;base64,test");
});
Assert.Contains("rz-icon-trash", component.Markup);
}
[Fact]
public void FileInput_Renders_CustomDeleteText()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
var component = ctx.RenderComponent<RadzenFileInput<string>>(parameters =>
{
parameters.Add(p => p.DeleteText, "Remove File");
parameters.Add(p => p.Value, "data:text/plain;base64,test");
});
Assert.Contains("title=\"Remove File\"", component.Markup);
}
[Fact]
public void FileInput_Renders_ImagePreview_ForImageFile()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
var component = ctx.RenderComponent<RadzenFileInput<string>>(parameters =>
{
parameters.Add(p => p.Value, "data:image/png;base64,test");
});
Assert.Contains("<img", component.Markup);
}
[Fact]
public void FileInput_Renders_ImageAlternateText()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
var component = ctx.RenderComponent<RadzenFileInput<string>>(parameters =>
{
parameters.Add(p => p.ImageAlternateText, "User Photo");
parameters.Add(p => p.Value, "data:image/png;base64,test");
});
Assert.Contains("alt=\"User Photo\"", component.Markup);
}
}
}

View File

@@ -0,0 +1,163 @@
using Bunit;
using Xunit;
namespace Radzen.Blazor.Tests
{
public class FormFieldTests
{
[Fact]
public void FormField_Renders_WithClassName()
{
using var ctx = new TestContext();
var component = ctx.RenderComponent<RadzenFormField>();
Assert.Contains(@"rz-form-field", component.Markup);
}
[Fact]
public void FormField_Renders_Text()
{
using var ctx = new TestContext();
var component = ctx.RenderComponent<RadzenFormField>(parameters =>
{
parameters.Add(p => p.Text, "Email Address");
});
Assert.Contains("Email Address", component.Markup);
Assert.Contains("rz-form-field-label", component.Markup);
}
[Fact]
public void FormField_Renders_Variant_Outlined()
{
using var ctx = new TestContext();
var component = ctx.RenderComponent<RadzenFormField>(parameters =>
{
parameters.Add(p => p.Variant, Variant.Outlined);
});
Assert.Contains("rz-variant-outlined", component.Markup);
}
[Fact]
public void FormField_Renders_Variant_Filled()
{
using var ctx = new TestContext();
var component = ctx.RenderComponent<RadzenFormField>(parameters =>
{
parameters.Add(p => p.Variant, Variant.Filled);
});
Assert.Contains("rz-variant-filled", component.Markup);
}
[Fact]
public void FormField_Renders_Variant_Flat()
{
using var ctx = new TestContext();
var component = ctx.RenderComponent<RadzenFormField>(parameters =>
{
parameters.Add(p => p.Variant, Variant.Flat);
});
Assert.Contains("rz-variant-flat", component.Markup);
}
[Fact]
public void FormField_Renders_Variant_Text()
{
using var ctx = new TestContext();
var component = ctx.RenderComponent<RadzenFormField>(parameters =>
{
parameters.Add(p => p.Variant, Variant.Text);
});
Assert.Contains("rz-variant-text", component.Markup);
}
[Fact]
public void FormField_Renders_AllowFloatingLabel_True()
{
using var ctx = new TestContext();
var component = ctx.RenderComponent<RadzenFormField>(parameters =>
{
parameters.Add(p => p.AllowFloatingLabel, true);
});
Assert.Contains("rz-floating-label", component.Markup);
}
[Fact]
public void FormField_Renders_AllowFloatingLabel_False()
{
using var ctx = new TestContext();
var component = ctx.RenderComponent<RadzenFormField>(parameters =>
{
parameters.Add(p => p.AllowFloatingLabel, false);
});
Assert.DoesNotContain("rz-floating-label", component.Markup);
}
[Fact]
public void FormField_Renders_Component_Attribute()
{
using var ctx = new TestContext();
var component = ctx.RenderComponent<RadzenFormField>(parameters =>
{
parameters.Add(p => p.Component, "email-input");
});
Assert.Contains("for=\"email-input\"", component.Markup);
}
[Fact]
public void FormField_Renders_Helper()
{
using var ctx = new TestContext();
var component = ctx.RenderComponent<RadzenFormField>(parameters =>
{
parameters.Add(p => p.Helper, builder => builder.AddContent(0, "Enter your email address"));
});
Assert.Contains("rz-form-field-helper", component.Markup);
Assert.Contains("Enter your email address", component.Markup);
}
[Fact]
public void FormField_Renders_Start()
{
using var ctx = new TestContext();
var component = ctx.RenderComponent<RadzenFormField>(parameters =>
{
parameters.Add(p => p.Start, builder => builder.AddMarkupContent(0, "<span>Start</span>"));
});
Assert.Contains("rz-form-field-start", component.Markup);
Assert.Contains("Start", component.Markup);
}
[Fact]
public void FormField_Renders_End()
{
using var ctx = new TestContext();
var component = ctx.RenderComponent<RadzenFormField>(parameters =>
{
parameters.Add(p => p.End, builder => builder.AddMarkupContent(0, "<span>End</span>"));
});
Assert.Contains("rz-form-field-end", component.Markup);
Assert.Contains("End", component.Markup);
}
[Fact]
public void FormField_Renders_FormFieldContent()
{
using var ctx = new TestContext();
var component = ctx.RenderComponent<RadzenFormField>();
Assert.Contains("rz-form-field-content", component.Markup);
}
}
}

View File

@@ -0,0 +1,161 @@
using Bunit;
using Xunit;
using System.Collections.Generic;
namespace Radzen.Blazor.Tests
{
public class PickListTests
{
class Item
{
public int Id { get; set; }
public string Name { get; set; }
}
[Fact]
public void PickList_Renders_WithClassName()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
var component = ctx.RenderComponent<RadzenPickList<Item>>();
Assert.Contains(@"rz-picklist", component.Markup);
}
[Fact]
public void PickList_Renders_SourceAndTargetLists()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
var component = ctx.RenderComponent<RadzenPickList<Item>>();
Assert.Contains("rz-picklist-source-wrapper", component.Markup);
Assert.Contains("rz-picklist-target-wrapper", component.Markup);
}
[Fact]
public void PickList_Renders_TransferButtons()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
var component = ctx.RenderComponent<RadzenPickList<Item>>();
Assert.Contains("rz-picklist-buttons", component.Markup);
}
[Fact]
public void PickList_Renders_Orientation_Horizontal()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
var component = ctx.RenderComponent<RadzenPickList<Item>>(parameters =>
{
parameters.Add(p => p.Orientation, Orientation.Horizontal);
});
Assert.Contains("rz-flex-row", component.Markup);
}
[Fact]
public void PickList_Renders_Orientation_Vertical()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
var component = ctx.RenderComponent<RadzenPickList<Item>>(parameters =>
{
parameters.Add(p => p.Orientation, Orientation.Vertical);
});
Assert.Contains("rz-flex-column", component.Markup);
}
[Fact]
public void PickList_Renders_AllowFiltering()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
var data = new List<Item>
{
new Item { Id = 1, Name = "Item 1" }
};
var component = ctx.RenderComponent<RadzenPickList<Item>>(parameters =>
{
parameters.Add(p => p.AllowFiltering, true);
parameters.Add(p => p.Source, data);
parameters.Add(p => p.TextProperty, "Name");
});
Assert.Contains("rz-listbox-filter", component.Markup);
}
[Fact]
public void PickList_Renders_SourceData()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
var data = new List<Item>
{
new Item { Id = 1, Name = "Source Item 1" },
new Item { Id = 2, Name = "Source Item 2" }
};
var component = ctx.RenderComponent<RadzenPickList<Item>>(parameters =>
{
parameters.Add(p => p.Source, data);
parameters.Add(p => p.TextProperty, "Name");
});
Assert.Contains("Source Item 1", component.Markup);
Assert.Contains("Source Item 2", component.Markup);
}
[Fact]
public void PickList_Renders_ShowHeader()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
var component = ctx.RenderComponent<RadzenPickList<Item>>(parameters =>
{
parameters.Add(p => p.ShowHeader, true);
parameters.Add(p => p.SourceHeader, builder => builder.AddContent(0, "Available Items"));
parameters.Add(p => p.TargetHeader, builder => builder.AddContent(0, "Selected Items"));
});
Assert.Contains("Available Items", component.Markup);
Assert.Contains("Selected Items", component.Markup);
}
[Fact]
public void PickList_Renders_AllowMoveAll_Buttons()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
var data = new List<Item> { new Item { Id = 1, Name = "Item" } };
var component = ctx.RenderComponent<RadzenPickList<Item>>(parameters =>
{
parameters.Add(p => p.AllowMoveAll, true);
parameters.Add(p => p.Source, data);
});
// Should have 4 buttons when AllowMoveAll is true
var buttonCount = System.Text.RegularExpressions.Regex.Matches(component.Markup, "rz-button").Count;
Assert.True(buttonCount >= 4);
}
[Fact]
public void PickList_Renders_Disabled()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
var component = ctx.RenderComponent<RadzenPickList<Item>>(parameters =>
{
parameters.Add(p => p.Disabled, true);
});
Assert.Contains("disabled", component.Markup);
}
}
}

View File

@@ -142,5 +142,45 @@ namespace Radzen.Blazor.Tests
component.SetParametersAndRender(parameters => parameters.Add(p => p.Mode, ProgressBarMode.Indeterminate));
Assert.Contains(@$"rz-progressbar-info", component.Markup);
}
[Fact]
public void ProgressBar_Renders_ShowValue_True()
{
using var ctx = new TestContext();
var component = ctx.RenderComponent<RadzenProgressBar>(parameters =>
{
parameters.Add(p => p.ShowValue, true);
parameters.Add(p => p.Value, 50);
});
Assert.Contains("rz-progressbar-label", component.Markup);
Assert.Contains("50%", component.Markup);
}
[Fact]
public void ProgressBar_Renders_ShowValue_False()
{
using var ctx = new TestContext();
var component = ctx.RenderComponent<RadzenProgressBar>(parameters =>
{
parameters.Add(p => p.ShowValue, false);
parameters.Add(p => p.Value, 50);
});
Assert.DoesNotContain("rz-progressbar-label", component.Markup);
}
[Fact]
public void ProgressBar_Renders_Template()
{
using var ctx = new TestContext();
var component = ctx.RenderComponent<RadzenProgressBar>(parameters =>
{
parameters.Add(p => p.Value, 75);
parameters.Add(p => p.Template, builder => builder.AddContent(0, "Custom: 75%"));
});
Assert.Contains("Custom: 75%", component.Markup);
}
}
}

View File

@@ -89,5 +89,71 @@ namespace Radzen.Blazor.Tests
Assert.Contains(@$"autofocus", component.Markup);
}
[Fact]
public void Slider_Renders_Orientation_Vertical()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
ctx.JSInterop.SetupModule("_content/Radzen.Blazor/Radzen.Blazor.js");
var component = ctx.RenderComponent<RadzenSlider<int>>(parameters =>
{
parameters.Add(p => p.Orientation, Orientation.Vertical);
});
Assert.Contains("rz-slider-vertical", component.Markup);
}
[Fact]
public void Slider_Renders_Disabled()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
ctx.JSInterop.SetupModule("_content/Radzen.Blazor/Radzen.Blazor.js");
var component = ctx.RenderComponent<RadzenSlider<int>>(parameters =>
{
parameters.Add(p => p.Disabled, true);
});
Assert.Contains("rz-state-disabled", component.Markup);
}
[Fact]
public void Slider_Renders_SliderHandle()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
ctx.JSInterop.SetupModule("_content/Radzen.Blazor/Radzen.Blazor.js");
var component = ctx.RenderComponent<RadzenSlider<int>>();
Assert.Contains("rz-slider-handle", component.Markup);
}
[Fact]
public void Slider_Renders_SliderRange()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
ctx.JSInterop.SetupModule("_content/Radzen.Blazor/Radzen.Blazor.js");
var component = ctx.RenderComponent<RadzenSlider<int>>();
Assert.Contains("rz-slider-range", component.Markup);
}
[Fact]
public void Slider_Renders_TabIndex()
{
using var ctx = new TestContext();
ctx.JSInterop.Mode = JSRuntimeMode.Loose;
ctx.JSInterop.SetupModule("_content/Radzen.Blazor/Radzen.Blazor.js");
var component = ctx.RenderComponent<RadzenSlider<int>>();
Assert.Contains("tabindex=\"0\"", component.Markup);
}
}
}