56 lines
1.9 KiB
C#
56 lines
1.9 KiB
C#
|
using MiniSkeletonAPI.Application.Common.Exceptions;
|
|||
|
using FluentAssertions;
|
|||
|
using FluentValidation.Results;
|
|||
|
using NUnit.Framework;
|
|||
|
|
|||
|
namespace Application.UnitTests.Common.Exceptions;
|
|||
|
|
|||
|
public class ValidationExceptionTests
|
|||
|
{
|
|||
|
[Test]
|
|||
|
public void DefaultConstructorCreatesAnEmptyErrorDictionary()
|
|||
|
{
|
|||
|
var actual = new ValidationException().Errors;
|
|||
|
|
|||
|
actual.Keys.Should().BeEquivalentTo(Array.Empty<string>());
|
|||
|
}
|
|||
|
|
|||
|
[Test]
|
|||
|
public void SingleValidationFailureCreatesASingleElementErrorDictionary()
|
|||
|
{
|
|||
|
var failures = new List<ValidationFailure>
|
|||
|
{
|
|||
|
new ValidationFailure("Password", "must contain at least 8 characters"),
|
|||
|
};
|
|||
|
|
|||
|
var actual = new ValidationException(failures).Errors;
|
|||
|
|
|||
|
actual.Keys.Should().BeEquivalentTo(new string[] { "Password" });
|
|||
|
actual["Password"].Should().BeEquivalentTo(new string[] { "must contain at least 8 characters" });
|
|||
|
}
|
|||
|
|
|||
|
[Test]
|
|||
|
public void MulitpleValidationFailureForMultiplePropertiesCreatesAMultipleElementErrorDictionaryEachWithMultipleValues()
|
|||
|
{
|
|||
|
var failures = new List<ValidationFailure>
|
|||
|
{
|
|||
|
new ValidationFailure("Password", "must contain at least 8 characters"),
|
|||
|
new ValidationFailure("Password", "must contain a digit"),
|
|||
|
new ValidationFailure("Password", "must contain upper case letter"),
|
|||
|
new ValidationFailure("Password", "must contain lower case letter"),
|
|||
|
};
|
|||
|
|
|||
|
var actual = new ValidationException(failures).Errors;
|
|||
|
|
|||
|
actual.Keys.Should().BeEquivalentTo(new string[] { "Password" });
|
|||
|
|
|||
|
actual["Password"].Should().BeEquivalentTo(new string[]
|
|||
|
{
|
|||
|
"must contain lower case letter",
|
|||
|
"must contain upper case letter",
|
|||
|
"must contain at least 8 characters",
|
|||
|
"must contain a digit",
|
|||
|
});
|
|||
|
}
|
|||
|
}
|