Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- [Test]
- public void Autocomplete_Should_Handle_Converter_WithStrict()
- {
- var comp = Context.RenderComponent<AutocompleteConverterStrictTest>();
- var autocompleteComponent = comp.FindComponent<MudAutocomplete<AutocompleteConverterStrictTest.ConverterElement>>();
- comp.Markup.Should().NotContain("mud-popover-open");
- autocompleteComponent.Find(".mud-button-root.mud-no-activator").Click(); // open popover
- comp.WaitForAssertion(() => comp.Find("div.mud-popover").ClassList.Should().Contain("mud-popover-open"));
- var items = comp.FindComponents<MudListItem<AutocompleteConverterStrictTest.ConverterElement>>().ToArray();
- items.Length.Should().Be(10, "The popover should contain 10 items."); // default maxitems is 10
- comp.Find(".mud-button-root.mud-no-activator").Click(); // close popover
- comp.WaitForAssertion(() => comp.Find("div.mud-popover").ClassList.Should().NotContain("mud-popover-open"));
- // set search
- autocompleteComponent.Find("input").Input("he");
- comp.WaitForAssertion(() => comp.Find("div.mud-popover").ClassList.Should().Contain("mud-popover-open"));
- var filteredItems = comp.FindComponents<MudListItem<AutocompleteConverterStrictTest.ConverterElement>>().ToArray();
- filteredItems.Length.Should().Be(4, "The popover should contain 4 items.");
- }
- AutocompleteConverterStrictTest.razor
- --------------------------------------
- @using MudBlazor.Examples.Data
- <MudPopoverProvider />
- <MudAutocomplete @bind-Value="_value1" SearchFunc="@Search1" CoerceValue Strict="false" Converter="_elementConverter" PopoverClass="autocomplete-popover-class" />
- @code {
- public static string __description__ = "Strict = false should work when a Converter is provided and CoerceValue is true";
- private ConverterElement? _value1;
- private PeriodicTableService _service = new PeriodicTableService();
- private readonly IConverter<ConverterElement?, string?> _elementConverter = Conversions
- .From((ConverterElement? value) => value?.ToString(),
- text => new ConverterElement { Name = text });
- private async Task<IEnumerable<ConverterElement?>> Search1(string value, CancellationToken token)
- {
- // In real life use an asynchronous function for fetching data from an api.
- await Task.Delay(50, token);
- value ??= string.Empty;
- var elements = await _service.GetElements(value);
- return elements.Select(x => new ConverterElement { Name = x.Name });
- }
- public class ConverterElement
- {
- public string? Name { get; set; }
- public override string ToString() => Name ?? string.Empty;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment