diff --git a/tests/GovUk.Frontend.AspNetCore.IntegrationTests/TagHelperModelBindingTests/Tests.cs b/tests/GovUk.Frontend.AspNetCore.IntegrationTests/TagHelperModelBindingTests/Tests.cs index a63a91d7..c5b599ec 100644 --- a/tests/GovUk.Frontend.AspNetCore.IntegrationTests/TagHelperModelBindingTests/Tests.cs +++ b/tests/GovUk.Frontend.AspNetCore.IntegrationTests/TagHelperModelBindingTests/Tests.cs @@ -173,6 +173,50 @@ public async Task DateInputOverriddenItems_RendersCorrectly() Assert.Equal("OverriddenYearId", await yearInput.GetAttributeAsync("id")); Assert.Equal("2020", await yearInput.GetAttributeAsync("value")); } + + [Fact] + public async Task Textarea_RendersCorrectly() + { + var page = await fixture.Browser!.NewPageAsync(); + await page.GotoAsync($"{ServerFixture.BaseUrl}/ModelBindingTests/Textarea"); + + var textarea = page.Locator("textarea").First; + Assert.Equal("Text", await textarea.GetAttributeAsync("name")); + Assert.Equal("Text", await textarea.GetAttributeAsync("id")); + Assert.Equal("Model value", await textarea.InputValueAsync()); + + var label = page.Locator("label").First; + Assert.Equal("Text", await label.GetAttributeAsync("for")); + Assert.Equal("ModelMetadata display name", await label.InnerTextAsync()); + + var hint = page.Locator(".govuk-hint").First; + Assert.Equal("ModelMetadata description", await hint.InnerTextAsync()); + + var errorMessage = page.Locator(".govuk-error-message").First; + Assert.Equal("Error: Model error message", await errorMessage.TextContentAsync()); + } + + [Fact] + public async Task TextareaOverridden_RendersCorrectly() + { + var page = await fixture.Browser!.NewPageAsync(); + await page.GotoAsync($"{ServerFixture.BaseUrl}/ModelBindingTests/TextareaOverridden"); + + var textarea = page.Locator("textarea").First; + Assert.Equal("OverriddenName", await textarea.GetAttributeAsync("name")); + Assert.Equal("OverriddenId", await textarea.GetAttributeAsync("id")); + Assert.Equal("Overridden value", await textarea.InputValueAsync()); + + var label = page.Locator("label").First; + Assert.Equal("OverriddenId", await label.GetAttributeAsync("for")); + Assert.Equal("Overridden label", await label.InnerTextAsync()); + + var hint = page.Locator(".govuk-hint").First; + Assert.Equal("Overridden hint", await hint.InnerTextAsync()); + + var errorMessage = page.Locator(".govuk-error-message").First; + Assert.Equal("Error: Overridden error message", await errorMessage.TextContentAsync()); + } } [Route("/[controller]/[action]")] @@ -226,6 +270,20 @@ public IActionResult DateInputOverriddenItems() ModelState.AddModelError(nameof(DateInputTestsModel.Date), "Model error message"); return View(new DateInputTestsModel { Date = new DateOnly(2024, 3, 15) }); } + + [HttpGet] + public IActionResult Textarea() + { + ModelState.AddModelError(nameof(TextareaTestsModel.Text), "Model error message"); + return View(new TextareaTestsModel { Text = "Model value" }); + } + + [HttpGet] + public IActionResult TextareaOverridden() + { + ModelState.AddModelError(nameof(TextareaTestsModel.Text), "Model error message"); + return View(new TextareaTestsModel { Text = "Model value" }); + } } public record TextInputTestsModel @@ -245,3 +303,9 @@ public record DateInputTestsModel [Display(Name = "ModelMetadata display name", Description = "ModelMetadata description")] public DateOnly? Date { get; set; } } + +public record TextareaTestsModel +{ + [Display(Name = "ModelMetadata display name", Description = "ModelMetadata description")] + public string? Text { get; set; } +} diff --git a/tests/GovUk.Frontend.AspNetCore.IntegrationTests/TagHelperModelBindingTests/Textarea.cshtml b/tests/GovUk.Frontend.AspNetCore.IntegrationTests/TagHelperModelBindingTests/Textarea.cshtml new file mode 100644 index 00000000..be31000e --- /dev/null +++ b/tests/GovUk.Frontend.AspNetCore.IntegrationTests/TagHelperModelBindingTests/Textarea.cshtml @@ -0,0 +1,3 @@ +@model GovUk.Frontend.AspNetCore.IntegrationTests.TagHelperModelBindingTests.TextareaTestsModel + + diff --git a/tests/GovUk.Frontend.AspNetCore.IntegrationTests/TagHelperModelBindingTests/TextareaOverridden.cshtml b/tests/GovUk.Frontend.AspNetCore.IntegrationTests/TagHelperModelBindingTests/TextareaOverridden.cshtml new file mode 100644 index 00000000..b7c3498d --- /dev/null +++ b/tests/GovUk.Frontend.AspNetCore.IntegrationTests/TagHelperModelBindingTests/TextareaOverridden.cshtml @@ -0,0 +1,8 @@ +@model GovUk.Frontend.AspNetCore.IntegrationTests.TagHelperModelBindingTests.TextareaTestsModel + + + Overridden label + Overridden hint + Overridden error message + Overridden value +