From 27a43f76b0ede9020f357e2d713205480ca8ccef Mon Sep 17 00:00:00 2001 From: Steven Giesel Date: Fri, 19 Apr 2024 16:26:51 +0200 Subject: [PATCH] fix: Htmlizer can handle NamedEvents Fixes #1438 --- CHANGELOG.md | 2 ++ src/bunit.web/Rendering/Internal/Htmlizer.cs | 4 ++++ .../SampleComponents/FormNameComponent.razor | 3 +++ .../Rendering/Internal/HtmlizerTests.cs | 14 ++++++++++++++ 4 files changed, 23 insertions(+) create mode 100644 tests/bunit.testassets/SampleComponents/FormNameComponent.razor diff --git a/CHANGELOG.md b/CHANGELOG.md index 77148ffe6..6776b28a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,8 @@ All notable changes to **bUnit** will be documented in this file. The project ad ### Fixed - bUnit's built-in HTML parser did not correctly parse full HTML documents that included a <!DOCTYPE html> as the first element. Fixed by [@egil](https://github.com/egil). +- `@formname` directive led to an `InvalidOperationException` when used on a form element. Reported by [@suzu2469](https://github.com/suzu2469) in [#1438](https://github.com/bUnit-dev/bUnit/issues/1438). + Fixed by [@egil](https://github.com/egil)/[@linkdotnet](https://github.com/linkdotnet). ### Changed - `NavigationManager` is again registered as a singleton instead of scoped. diff --git a/src/bunit.web/Rendering/Internal/Htmlizer.cs b/src/bunit.web/Rendering/Internal/Htmlizer.cs index 9db5e9892..24c42b7c7 100644 --- a/src/bunit.web/Rendering/Internal/Htmlizer.cs +++ b/src/bunit.web/Rendering/Internal/Htmlizer.cs @@ -119,6 +119,10 @@ int position case RenderTreeFrameType.ElementReferenceCapture: case RenderTreeFrameType.ComponentReferenceCapture: return position + 1; +#if NET8_0_OR_GREATER + case RenderTreeFrameType.NamedEvent: + return position + 1; +#endif default: throw new InvalidOperationException( $"Invalid element frame type '{frame.FrameType}'." diff --git a/tests/bunit.testassets/SampleComponents/FormNameComponent.razor b/tests/bunit.testassets/SampleComponents/FormNameComponent.razor new file mode 100644 index 000000000..cd3ad3c4a --- /dev/null +++ b/tests/bunit.testassets/SampleComponents/FormNameComponent.razor @@ -0,0 +1,3 @@ +
+ +
\ No newline at end of file diff --git a/tests/bunit.web.tests/Rendering/Internal/HtmlizerTests.cs b/tests/bunit.web.tests/Rendering/Internal/HtmlizerTests.cs index d626b86a7..ee2519a85 100644 --- a/tests/bunit.web.tests/Rendering/Internal/HtmlizerTests.cs +++ b/tests/bunit.web.tests/Rendering/Internal/HtmlizerTests.cs @@ -39,7 +39,21 @@ public void Test003() cut.Find("button").HasAttribute("blazor:elementreference").ShouldBeTrue(); } + +#if NET8_0_OR_GREATER + [Fact(DisplayName = "Htmlizer ignores NamedEvents")] + public void Test004() + { + var cut = RenderComponent(); + cut.MarkupMatches(""" +
+ +
+ """); + } +#endif + private sealed class Htmlizer01Component : ComponentBase { public ElementReference ButtomElmRef { get; set; }