Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
@model GovUk.Frontend.AspNetCore.IntegrationTests.TagHelperModelBindingTests.CharacterCountTestsModel

<govuk-character-count for="Text" max-length="200" />
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
@model GovUk.Frontend.AspNetCore.IntegrationTests.TagHelperModelBindingTests.CharacterCountTestsModel

<govuk-character-count for="Text" name="OverriddenName" id="OverriddenId" max-length="200">
<govuk-character-count-label>Overridden label</govuk-character-count-label>
<govuk-character-count-hint>Overridden hint</govuk-character-count-hint>
<govuk-character-count-error-message>Overridden error message</govuk-character-count-error-message>
<govuk-character-count-value>Overridden value</govuk-character-count-value>
</govuk-character-count>
Original file line number Diff line number Diff line change
Expand Up @@ -217,6 +217,50 @@ public async Task TextareaOverridden_RendersCorrectly()
var errorMessage = page.Locator(".govuk-error-message").First;
Assert.Equal("Error: Overridden error message", await errorMessage.TextContentAsync());
}

[Fact]
public async Task CharacterCount_RendersCorrectly()
{
var page = await fixture.Browser!.NewPageAsync();
await page.GotoAsync($"{ServerFixture.BaseUrl}/ModelBindingTests/CharacterCount");

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 CharacterCountOverridden_RendersCorrectly()
{
var page = await fixture.Browser!.NewPageAsync();
await page.GotoAsync($"{ServerFixture.BaseUrl}/ModelBindingTests/CharacterCountOverridden");

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]")]
Expand Down Expand Up @@ -284,6 +328,20 @@ public IActionResult TextareaOverridden()
ModelState.AddModelError(nameof(TextareaTestsModel.Text), "Model error message");
return View(new TextareaTestsModel { Text = "Model value" });
}

[HttpGet]
public IActionResult CharacterCount()
{
ModelState.AddModelError(nameof(CharacterCountTestsModel.Text), "Model error message");
return View(new CharacterCountTestsModel { Text = "Model value" });
}

[HttpGet]
public IActionResult CharacterCountOverridden()
{
ModelState.AddModelError(nameof(CharacterCountTestsModel.Text), "Model error message");
return View(new CharacterCountTestsModel { Text = "Model value" });
}
}

public record TextInputTestsModel
Expand All @@ -309,3 +367,9 @@ public record TextareaTestsModel
[Display(Name = "ModelMetadata display name", Description = "ModelMetadata description")]
public string? Text { get; set; }
}

public record CharacterCountTestsModel
{
[Display(Name = "ModelMetadata display name", Description = "ModelMetadata description")]
public string? Text { get; set; }
}