diff --git a/Govor.API.Tests/UnitTests/Infrastructure/Validators/InvitationValidatorTests.cs b/Govor.API.Tests/UnitTests/Infrastructure/Validators/InvitationValidatorTests.cs index e0f2314..7a2a9b4 100644 --- a/Govor.API.Tests/UnitTests/Infrastructure/Validators/InvitationValidatorTests.cs +++ b/Govor.API.Tests/UnitTests/Infrastructure/Validators/InvitationValidatorTests.cs @@ -1,7 +1,92 @@ +using AutoFixture; +using Govor.Core.Infrastructure.Validators; +using Govor.Core.Models; + namespace Govor.API.Tests.UnitTests.Infrastructure.Validators; [TestFixture] public class InvitationValidatorTests { + private IObjectValidator _messageValidator; + private Fixture _fixture; + + public InvitationValidatorTests() + { + _messageValidator = new InvitationValidator(); + + _fixture = new Fixture(); + + _fixture.Behaviors + .OfType() + .ToList() + .ForEach(b => _fixture.Behaviors.Remove(b)); + + _fixture.Behaviors.Add(new OmitOnRecursionBehavior()); + } + [Test] + public void Given_ValidInvitation_When_Exist_Then_Returns_True() + { + var invitation = _fixture.Create(); + + // Act & Assert + Assert.DoesNotThrow( () => _messageValidator.Validate(invitation)); + Assert.That(_messageValidator.TryValidate(invitation), Is.True); + } + + [Test] + public void Given_NullInvitation_When_Exist_Then_Returns_False() + { + // Act & Assert + Assert.Throws>( () => _messageValidator.Validate(default)); + Assert.That(_messageValidator.TryValidate(default), Is.False); + } + + [Test] + public void Given_EmptyInvitationId_When_Exist_Then_Returns_False() + { + // Arrange + var invitation = _fixture.Create(); + invitation.Id = Guid.Empty; + + // Act & Assert + Assert.Throws>( () => _messageValidator.Validate(invitation)); + Assert.That(_messageValidator.TryValidate(invitation), Is.False); + } + + [Test] + public void Given_EmptyInvitationCreationDate_When_Exist_Then_Returns_False() + { + // Arrange + var invitation = _fixture.Create(); + invitation.DateCreated = DateTime.MinValue; + + // Act & Assert + Assert.Throws>( () => _messageValidator.Validate(invitation)); + Assert.That(_messageValidator.TryValidate(invitation), Is.False); + } + + [Test] + public void Given_InvalidEndDate_When_Exist_Then_Returns_False() + { + // Arrange + var invitation = _fixture.Create(); + invitation.EndDate = invitation.DateCreated.AddDays(-1); + + // Act & Assert + Assert.Throws>( () => _messageValidator.Validate(invitation)); + Assert.That(_messageValidator.TryValidate(invitation), Is.False); + } + + [Test] + public void Given_InvalidMaxParticipants_When_Exist_Then_Returns_False() + { + // Arrange + var invitation = _fixture.Create(); + invitation.MaxParticipants = new Random().Next(-5, 0); + + // Act & Assert + Assert.Throws>( () => _messageValidator.Validate(invitation)); + Assert.That(_messageValidator.TryValidate(invitation), Is.False); + } } \ No newline at end of file