Skip to content

Commit be11f9f

Browse files
Copilotgunndabad
andauthored
Add character count model binding integration tests (#443)
* Initial plan * Add character count model binding integration tests Co-authored-by: gunndabad <2041280+gunndabad@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: gunndabad <2041280+gunndabad@users.noreply.github.com>
1 parent 2fdc3c6 commit be11f9f

File tree

3 files changed

+75
-0
lines changed

3 files changed

+75
-0
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
@model GovUk.Frontend.AspNetCore.IntegrationTests.TagHelperModelBindingTests.CharacterCountTestsModel
2+
3+
<govuk-character-count for="Text" max-length="200" />
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
@model GovUk.Frontend.AspNetCore.IntegrationTests.TagHelperModelBindingTests.CharacterCountTestsModel
2+
3+
<govuk-character-count for="Text" name="OverriddenName" id="OverriddenId" max-length="200">
4+
<govuk-character-count-label>Overridden label</govuk-character-count-label>
5+
<govuk-character-count-hint>Overridden hint</govuk-character-count-hint>
6+
<govuk-character-count-error-message>Overridden error message</govuk-character-count-error-message>
7+
<govuk-character-count-value>Overridden value</govuk-character-count-value>
8+
</govuk-character-count>

tests/GovUk.Frontend.AspNetCore.IntegrationTests/TagHelperModelBindingTests/Tests.cs

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,50 @@ public async Task TextareaOverridden_RendersCorrectly()
217217
var errorMessage = page.Locator(".govuk-error-message").First;
218218
Assert.Equal("Error: Overridden error message", await errorMessage.TextContentAsync());
219219
}
220+
221+
[Fact]
222+
public async Task CharacterCount_RendersCorrectly()
223+
{
224+
var page = await fixture.Browser!.NewPageAsync();
225+
await page.GotoAsync($"{ServerFixture.BaseUrl}/ModelBindingTests/CharacterCount");
226+
227+
var textarea = page.Locator("textarea").First;
228+
Assert.Equal("Text", await textarea.GetAttributeAsync("name"));
229+
Assert.Equal("Text", await textarea.GetAttributeAsync("id"));
230+
Assert.Equal("Model value", await textarea.InputValueAsync());
231+
232+
var label = page.Locator("label").First;
233+
Assert.Equal("Text", await label.GetAttributeAsync("for"));
234+
Assert.Equal("ModelMetadata display name", await label.InnerTextAsync());
235+
236+
var hint = page.Locator(".govuk-hint").First;
237+
Assert.Equal("ModelMetadata description", await hint.InnerTextAsync());
238+
239+
var errorMessage = page.Locator(".govuk-error-message").First;
240+
Assert.Equal("Error: Model error message", await errorMessage.TextContentAsync());
241+
}
242+
243+
[Fact]
244+
public async Task CharacterCountOverridden_RendersCorrectly()
245+
{
246+
var page = await fixture.Browser!.NewPageAsync();
247+
await page.GotoAsync($"{ServerFixture.BaseUrl}/ModelBindingTests/CharacterCountOverridden");
248+
249+
var textarea = page.Locator("textarea").First;
250+
Assert.Equal("OverriddenName", await textarea.GetAttributeAsync("name"));
251+
Assert.Equal("OverriddenId", await textarea.GetAttributeAsync("id"));
252+
Assert.Equal("Overridden value", await textarea.InputValueAsync());
253+
254+
var label = page.Locator("label").First;
255+
Assert.Equal("OverriddenId", await label.GetAttributeAsync("for"));
256+
Assert.Equal("Overridden label", await label.InnerTextAsync());
257+
258+
var hint = page.Locator(".govuk-hint").First;
259+
Assert.Equal("Overridden hint", await hint.InnerTextAsync());
260+
261+
var errorMessage = page.Locator(".govuk-error-message").First;
262+
Assert.Equal("Error: Overridden error message", await errorMessage.TextContentAsync());
263+
}
220264
}
221265

222266
[Route("/[controller]/[action]")]
@@ -284,6 +328,20 @@ public IActionResult TextareaOverridden()
284328
ModelState.AddModelError(nameof(TextareaTestsModel.Text), "Model error message");
285329
return View(new TextareaTestsModel { Text = "Model value" });
286330
}
331+
332+
[HttpGet]
333+
public IActionResult CharacterCount()
334+
{
335+
ModelState.AddModelError(nameof(CharacterCountTestsModel.Text), "Model error message");
336+
return View(new CharacterCountTestsModel { Text = "Model value" });
337+
}
338+
339+
[HttpGet]
340+
public IActionResult CharacterCountOverridden()
341+
{
342+
ModelState.AddModelError(nameof(CharacterCountTestsModel.Text), "Model error message");
343+
return View(new CharacterCountTestsModel { Text = "Model value" });
344+
}
287345
}
288346

289347
public record TextInputTestsModel
@@ -309,3 +367,9 @@ public record TextareaTestsModel
309367
[Display(Name = "ModelMetadata display name", Description = "ModelMetadata description")]
310368
public string? Text { get; set; }
311369
}
370+
371+
public record CharacterCountTestsModel
372+
{
373+
[Display(Name = "ModelMetadata display name", Description = "ModelMetadata description")]
374+
public string? Text { get; set; }
375+
}

0 commit comments

Comments
 (0)