Add validator tests for brewery and user commands (#282)

This commit is contained in:
Aaron Po
2026-09-06 17:48:03 -04:00
committed by GitHub
parent 9d5a463d93
commit a3ec7d63f2
13 changed files with 977 additions and 3 deletions

View File

@@ -0,0 +1,71 @@
using Features.Users.Commands.Account.UpdateUsername;
using FluentValidation.TestHelper;
namespace Features.Users.Tests.Commands;
public class UpdateUsernameValidatorTests
{
private readonly UpdateUsernameValidator _validator = new();
private static UpdateUsernameCommand ValidCommand() => new(Guid.NewGuid(), "valid.user-99");
[Fact]
public void Validate_ValidCommand_HasNoValidationErrors()
{
TestValidationResult<UpdateUsernameCommand> result = _validator.TestValidate(
ValidCommand()
);
result.ShouldNotHaveAnyValidationErrors();
}
[Fact]
public void Validate_EmptyNewUsername_HasErrorForNewUsername()
{
UpdateUsernameCommand command = ValidCommand() with { NewUsername = "" };
TestValidationResult<UpdateUsernameCommand> result = _validator.TestValidate(command);
result
.ShouldHaveValidationErrorFor(x => x.NewUsername)
.WithErrorMessage("Username is required");
}
[Fact]
public void Validate_NewUsernameTooShort_HasErrorForNewUsername()
{
UpdateUsernameCommand command = ValidCommand() with { NewUsername = "ab" };
TestValidationResult<UpdateUsernameCommand> result = _validator.TestValidate(command);
result
.ShouldHaveValidationErrorFor(x => x.NewUsername)
.WithErrorMessage("Username must be between 3 and 64 characters");
}
[Fact]
public void Validate_NewUsernameTooLong_HasErrorForNewUsername()
{
UpdateUsernameCommand command = ValidCommand() with { NewUsername = new string('a', 65) };
TestValidationResult<UpdateUsernameCommand> result = _validator.TestValidate(command);
result
.ShouldHaveValidationErrorFor(x => x.NewUsername)
.WithErrorMessage("Username must be between 3 and 64 characters");
}
[Fact]
public void Validate_NewUsernameHasDisallowedCharacters_HasErrorForNewUsername()
{
UpdateUsernameCommand command = ValidCommand() with { NewUsername = "bad user!" };
TestValidationResult<UpdateUsernameCommand> result = _validator.TestValidate(command);
result
.ShouldHaveValidationErrorFor(x => x.NewUsername)
.WithErrorMessage(
"Username can only contain letters, numbers, dots, underscores, and hyphens"
);
}
}