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

<govuk-file-upload for="File" />
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
@model GovUk.Frontend.AspNetCore.IntegrationTests.TagHelperModelBindingTests.FileUploadTestsModel

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

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

var input = page.Locator("input[type='file']").First;
Assert.Equal("File", await input.GetAttributeAsync("name"));
Assert.Equal("File", await input.GetAttributeAsync("id"));

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

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

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 @@ -342,6 +384,20 @@ public IActionResult CharacterCountOverridden()
ModelState.AddModelError(nameof(CharacterCountTestsModel.Text), "Model error message");
return View(new CharacterCountTestsModel { Text = "Model value" });
}

[HttpGet]
public IActionResult FileUpload()
{
ModelState.AddModelError(nameof(FileUploadTestsModel.File), "Model error message");
return View(new FileUploadTestsModel());
}

[HttpGet]
public IActionResult FileUploadOverridden()
{
ModelState.AddModelError(nameof(FileUploadTestsModel.File), "Model error message");
return View(new FileUploadTestsModel());
}
}

public record TextInputTestsModel
Expand Down Expand Up @@ -373,3 +429,9 @@ public record CharacterCountTestsModel
[Display(Name = "ModelMetadata display name", Description = "ModelMetadata description")]
public string? Text { get; set; }
}

public record FileUploadTestsModel
{
[Display(Name = "ModelMetadata display name", Description = "ModelMetadata description")]
public Microsoft.AspNetCore.Http.IFormFile? File { get; set; }
}