Guest User

Untitled

a guest
Dec 16th, 2025
28
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.60 KB | None | 0 0
  1. [Test]
  2. public void Autocomplete_Should_Handle_Converter_WithStrict()
  3. {
  4. var comp = Context.RenderComponent<AutocompleteConverterStrictTest>();
  5. var autocompleteComponent = comp.FindComponent<MudAutocomplete<AutocompleteConverterStrictTest.ConverterElement>>();
  6. comp.Markup.Should().NotContain("mud-popover-open");
  7.  
  8. autocompleteComponent.Find(".mud-button-root.mud-no-activator").Click(); // open popover
  9. comp.WaitForAssertion(() => comp.Find("div.mud-popover").ClassList.Should().Contain("mud-popover-open"));
  10. var items = comp.FindComponents<MudListItem<AutocompleteConverterStrictTest.ConverterElement>>().ToArray();
  11. items.Length.Should().Be(10, "The popover should contain 10 items."); // default maxitems is 10
  12. comp.Find(".mud-button-root.mud-no-activator").Click(); // close popover
  13. comp.WaitForAssertion(() => comp.Find("div.mud-popover").ClassList.Should().NotContain("mud-popover-open"));
  14.  
  15. // set search
  16. autocompleteComponent.Find("input").Input("he");
  17. comp.WaitForAssertion(() => comp.Find("div.mud-popover").ClassList.Should().Contain("mud-popover-open"));
  18. var filteredItems = comp.FindComponents<MudListItem<AutocompleteConverterStrictTest.ConverterElement>>().ToArray();
  19. filteredItems.Length.Should().Be(4, "The popover should contain 4 items.");
  20. }
  21.  
  22. AutocompleteConverterStrictTest.razor
  23. --------------------------------------
  24. @using MudBlazor.Examples.Data
  25. <MudPopoverProvider />
  26.  
  27. <MudAutocomplete @bind-Value="_value1" SearchFunc="@Search1" CoerceValue Strict="false" Converter="_elementConverter" PopoverClass="autocomplete-popover-class" />
  28.  
  29. @code {
  30. public static string __description__ = "Strict = false should work when a Converter is provided and CoerceValue is true";
  31.  
  32. private ConverterElement? _value1;
  33. private PeriodicTableService _service = new PeriodicTableService();
  34.  
  35. private readonly IConverter<ConverterElement?, string?> _elementConverter = Conversions
  36. .From((ConverterElement? value) => value?.ToString(),
  37. text => new ConverterElement { Name = text });
  38.  
  39.  
  40. private async Task<IEnumerable<ConverterElement?>> Search1(string value, CancellationToken token)
  41. {
  42. // In real life use an asynchronous function for fetching data from an api.
  43. await Task.Delay(50, token);
  44.  
  45. value ??= string.Empty;
  46. var elements = await _service.GetElements(value);
  47. return elements.Select(x => new ConverterElement { Name = x.Name });
  48. }
  49.  
  50. public class ConverterElement
  51. {
  52. public string? Name { get; set; }
  53.  
  54. public override string ToString() => Name ?? string.Empty;
  55. }
  56. }
  57.  
Advertisement
Add Comment
Please, Sign In to add comment