From 110e41f74106e95474c9d5cbd9463ff528692339 Mon Sep 17 00:00:00 2001 From: Steve Sanderson Date: Mon, 22 Apr 2019 10:58:04 +0100 Subject: [PATCH] Fix InputCheckbox when initially checked. Fixes #8502 --- .../src/Forms/InputComponents/InputCheckbox.cs | 2 +- src/Components/test/E2ETest/Tests/FormsTest.cs | 12 +++++++++++- .../FormsTest/TypicalValidationComponent.razor | 6 ++++++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/Components/Components/src/Forms/InputComponents/InputCheckbox.cs b/src/Components/Components/src/Forms/InputComponents/InputCheckbox.cs index 673cf98787..300d77f1d9 100644 --- a/src/Components/Components/src/Forms/InputComponents/InputCheckbox.cs +++ b/src/Components/Components/src/Forms/InputComponents/InputCheckbox.cs @@ -27,7 +27,7 @@ namespace Microsoft.AspNetCore.Components.Forms builder.AddAttribute(1, "type", "checkbox"); builder.AddAttribute(2, "id", Id); builder.AddAttribute(3, "class", CssClass); - builder.AddAttribute(4, "value", BindMethods.GetValue(CurrentValue)); + builder.AddAttribute(4, "checked", BindMethods.GetValue(CurrentValue)); builder.AddAttribute(5, "onchange", BindMethods.SetValueHandler(__value => CurrentValue = __value, CurrentValue)); builder.CloseElement(); } diff --git a/src/Components/test/E2ETest/Tests/FormsTest.cs b/src/Components/test/E2ETest/Tests/FormsTest.cs index ce4b733a87..9273f75a6c 100644 --- a/src/Components/test/E2ETest/Tests/FormsTest.cs +++ b/src/Components/test/E2ETest/Tests/FormsTest.cs @@ -244,17 +244,27 @@ namespace Microsoft.AspNetCore.Components.E2ETest.Tests { var appElement = MountTestComponent(); var acceptsTermsInput = appElement.FindElement(By.ClassName("accepts-terms")).FindElement(By.TagName("input")); + var isEvilInput = appElement.FindElement(By.ClassName("is-evil")).FindElement(By.TagName("input")); var messagesAccessor = CreateValidationMessagesAccessor(appElement); + // Correct initial checkedness + Assert.False(acceptsTermsInput.Selected); + Assert.True(isEvilInput.Selected); + // Validates on edit Browser.Equal("valid", () => acceptsTermsInput.GetAttribute("class")); + Browser.Equal("valid", () => isEvilInput.GetAttribute("class")); acceptsTermsInput.Click(); + isEvilInput.Click(); Browser.Equal("modified valid", () => acceptsTermsInput.GetAttribute("class")); + Browser.Equal("modified valid", () => isEvilInput.GetAttribute("class")); // Can become invalid acceptsTermsInput.Click(); + isEvilInput.Click(); Browser.Equal("modified invalid", () => acceptsTermsInput.GetAttribute("class")); - Browser.Equal(new[] { "Must accept terms" }, messagesAccessor); + Browser.Equal("modified invalid", () => isEvilInput.GetAttribute("class")); + Browser.Equal(new[] { "Must accept terms", "Must not be evil" }, messagesAccessor); } [Fact] diff --git a/src/Components/test/testassets/BasicTestApp/FormsTest/TypicalValidationComponent.razor b/src/Components/test/testassets/BasicTestApp/FormsTest/TypicalValidationComponent.razor index bfa01565da..d4285e92e2 100644 --- a/src/Components/test/testassets/BasicTestApp/FormsTest/TypicalValidationComponent.razor +++ b/src/Components/test/testassets/BasicTestApp/FormsTest/TypicalValidationComponent.razor @@ -39,6 +39,9 @@

Accepts terms:

+

+ Is evil: +

@@ -72,6 +75,9 @@ [Required, Range(typeof(bool), "true", "true", ErrorMessage = "Must accept terms")] public bool AcceptsTerms { get; set; } + [Required, Range(typeof(bool), "false", "false", ErrorMessage = "Must not be evil")] + public bool IsEvil { get; set; } = true; + [Required, StringLength(20, ErrorMessage = "Description is max 20 chars")] public string Description { get; set; }