Files
vegasco/tests/WebApi.Tests.Unit/Cars/CreateCarRequestValidatorTests.cs

73 lines
1.7 KiB
C#
Raw Normal View History

2024-08-17 16:38:40 +02:00
using FluentAssertions;
using FluentValidation.Results;
2024-08-17 16:38:40 +02:00
using Vegasco.WebApi.Cars;
namespace WebApi.Tests.Unit.Cars;
public sealed class CreateCarRequestValidatorTests
{
private readonly CreateCar.Validator _sut = new();
private readonly CreateCar.Request _validRequest = new("Ford Focus");
[Fact]
public async Task ValidateAsync_ShouldBeValid_WhenRequestIsValid()
{
// Arrange
// Act
ValidationResult? result = await _sut.ValidateAsync(_validRequest);
2024-08-17 16:38:40 +02:00
// Assert
result.IsValid.Should().BeTrue();
}
[Theory]
[InlineData(1)]
[InlineData(50)]
public async Task ValidateAsync_ShouldBeValid_WhenNameIsJustWithinTheLimits(int nameLength)
{
// Arrange
CreateCar.Request request = _validRequest with { Name = new string('s', nameLength) };
2024-08-17 16:38:40 +02:00
// Act
ValidationResult? result = await _sut.ValidateAsync(request);
2024-08-17 16:38:40 +02:00
// Assert
result.IsValid.Should().BeTrue();
}
[Fact]
public async Task ValidateAsync_ShouldNotBeValid_WhenNameIsEmpty()
{
// Arrange
CreateCar.Request request = _validRequest with { Name = "" };
2024-08-17 16:38:40 +02:00
// Act
ValidationResult? result = await _sut.ValidateAsync(request);
2024-08-17 16:38:40 +02:00
// Assert
result.IsValid.Should().BeFalse();
result.Errors.Should().ContainSingle()
.Which
.PropertyName.Should().Be(nameof(CreateCar.Request.Name));
}
[Fact]
public async Task ValidateAsync_ShouldNotBeValid_WhenNameIsTooLong()
{
// Arrange
const int nameMaxLength = 50;
CreateCar.Request request = _validRequest with { Name = new string('s', nameMaxLength + 1) };
2024-08-17 16:38:40 +02:00
// Act
ValidationResult? result = await _sut.ValidateAsync(request);
2024-08-17 16:38:40 +02:00
// Assert
result.IsValid.Should().BeFalse();
result.Errors.Should().ContainSingle()
.Which
.PropertyName.Should().Be(nameof(CreateCar.Request.Name));
}
}