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.PasswordInputTestsModel

<govuk-password-input for="Password" />
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
@model GovUk.Frontend.AspNetCore.IntegrationTests.TagHelperModelBindingTests.PasswordInputTestsModel

<govuk-password-input for="Password" name="OverriddenName" id="OverriddenId" value="Overridden value">
<govuk-password-input-label>Overridden label</govuk-password-input-label>
<govuk-password-input-hint>Overridden hint</govuk-password-input-hint>
<govuk-password-input-error-message>Overridden error message</govuk-password-input-error-message>
</govuk-password-input>
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,50 @@ public async Task TextInputOverridden_RendersCorrectly()
var errorMessage = page.Locator(".govuk-error-message").First;
Assert.Equal("Error: Overridden error message", await errorMessage.TextContentAsync());
}

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

var input = page.Locator("input[type='password']").First;
Assert.Equal("Password", await input.GetAttributeAsync("name"));
Assert.Equal("Password", await input.GetAttributeAsync("id"));
Assert.Equal("Model value", await input.GetAttributeAsync("value"));

var label = page.Locator("label").First;
Assert.Equal("Password", 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 PasswordInputOverridden_RendersCorrectly()
{
var page = await fixture.Browser!.NewPageAsync();
await page.GotoAsync($"{ServerFixture.BaseUrl}/ModelBindingTests/PasswordInputOverridden");

var input = page.Locator("input[type='password']").First;
Assert.Equal("OverriddenName", await input.GetAttributeAsync("name"));
Assert.Equal("OverriddenId", await input.GetAttributeAsync("id"));
Assert.Equal("Overridden value", await input.GetAttributeAsync("value"));

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 All @@ -67,10 +111,30 @@ public IActionResult TextInputOverridden()
ModelState.AddModelError(nameof(TextInputTestsModel.Text), "Model error message");
return View(new TextInputTestsModel { Text = "Model value" });
}

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

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

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

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