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
+