From 7bbb2b6660caa59b12a2fd84281bc393b8334a22 Mon Sep 17 00:00:00 2001 From: Steve Sanderson Date: Tue, 16 Jan 2018 16:15:46 +0000 Subject: [PATCH] In RazorCompiler, support attribute values of type UIEventHandler --- .../RenderTree/UIEventHandler.cs | 2 +- .../RazorCompilerTest.cs | 26 ++++++++++++-- .../testapps/BasicTestApp/CounterComponent.cs | 35 ------------------- .../BasicTestApp/CounterComponent.cshtml | 12 +++++++ 4 files changed, 36 insertions(+), 39 deletions(-) delete mode 100644 test/testapps/BasicTestApp/CounterComponent.cs create mode 100644 test/testapps/BasicTestApp/CounterComponent.cshtml diff --git a/src/Microsoft.Blazor/RenderTree/UIEventHandler.cs b/src/Microsoft.Blazor/RenderTree/UIEventHandler.cs index 54a11d7273..51d9a4acf5 100644 --- a/src/Microsoft.Blazor/RenderTree/UIEventHandler.cs +++ b/src/Microsoft.Blazor/RenderTree/UIEventHandler.cs @@ -6,5 +6,5 @@ namespace Microsoft.Blazor.RenderTree /// /// Handles an event raised for a . /// - public delegate void UIEventHandler(UIEventArgs eventInfo); + public delegate void UIEventHandler(UIEventArgs eventArgs); } diff --git a/test/Microsoft.Blazor.Build.Test/RazorCompilerTest.cs b/test/Microsoft.Blazor.Build.Test/RazorCompilerTest.cs index 902efb6747..17a4ce6310 100644 --- a/test/Microsoft.Blazor.Build.Test/RazorCompilerTest.cs +++ b/test/Microsoft.Blazor.Build.Test/RazorCompilerTest.cs @@ -179,7 +179,7 @@ namespace Microsoft.Blazor.Build.Test + ""); // Assert - Assert.Collection(GetRenderTree(component).Where(NotWhitespace), + Assert.Collection(GetRenderTree(component), node => AssertNode.Element(node, "elem", 1), node => AssertNode.Attribute(node, "attr", "My string")); } @@ -193,7 +193,7 @@ namespace Microsoft.Blazor.Build.Test + ""); // Assert - Assert.Collection(GetRenderTree(component).Where(NotWhitespace), + Assert.Collection(GetRenderTree(component), node => AssertNode.Element(node, "elem", 1), node => AssertNode.Attribute(node, "attr", "123")); } @@ -207,11 +207,31 @@ namespace Microsoft.Blazor.Build.Test + ""); // Assert - Assert.Collection(GetRenderTree(component).Where(NotWhitespace), + Assert.Collection(GetRenderTree(component), node => AssertNode.Element(node, "elem", 1), node => AssertNode.Attribute(node, "attr", "Hello, WORLD with number 246!")); } + [Fact] + public void SupportsAttributesWithEventHandlerValues() + { + // Arrange/Act + var component = CompileToComponent( + "" + + @"@functions { + void MyHandleEvent(Microsoft.Blazor.RenderTree.UIEventArgs eventArgs) {} + }"); + + // Assert + Assert.Collection(GetRenderTree(component), + node => AssertNode.Element(node, "elem", 1), + node => + { + Assert.Equal(RenderTreeNodeType.Attribute, node.NodeType); + Assert.NotNull(node.AttributeEventHandlerValue); + }); + } + private static bool NotWhitespace(RenderTreeNode node) => node.NodeType != RenderTreeNodeType.Text || !string.IsNullOrWhiteSpace(node.TextContent); diff --git a/test/testapps/BasicTestApp/CounterComponent.cs b/test/testapps/BasicTestApp/CounterComponent.cs deleted file mode 100644 index af1854b7b3..0000000000 --- a/test/testapps/BasicTestApp/CounterComponent.cs +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. - -using Microsoft.Blazor.Components; -using Microsoft.Blazor.RenderTree; - -namespace BasicTestApp -{ - public class CounterComponent : IComponent - { - private int currentCount = 0; - - public void BuildRenderTree(RenderTreeBuilder builder) - { - builder.OpenElement("h1"); - builder.AddText("Counter"); - builder.CloseElement(); - - builder.OpenElement("p"); - builder.AddText("Current count: "); - builder.AddText(currentCount.ToString()); - builder.CloseElement(); - - builder.OpenElement("button"); - builder.AddAttribute("onclick", OnButtonClicked); - builder.AddText("Click me"); - builder.CloseElement(); - } - - private void OnButtonClicked(UIEventArgs eventInfo) - { - currentCount++; - } - } -} diff --git a/test/testapps/BasicTestApp/CounterComponent.cshtml b/test/testapps/BasicTestApp/CounterComponent.cshtml new file mode 100644 index 0000000000..f82015a4aa --- /dev/null +++ b/test/testapps/BasicTestApp/CounterComponent.cshtml @@ -0,0 +1,12 @@ +

Counter

+

Current count: @currentCount.ToString()

+ + +@functions { + int currentCount = 0; + + void OnButtonClicked(Microsoft.Blazor.RenderTree.UIEventArgs eventArgs) + { + currentCount++; + } +}