using AutoFixture; using Govor.Domain.Common.Constants; using Govor.Domain.Models; namespace Govor.API.Tests.UnitTests.Infrastructure.Validators; [TestFixture] public class InvitationConstantsTests { private IObjectValidator _messageValidator; private Fixture _fixture; public InvitationConstantsTests() { _messageValidator = new InvitationConstants(); _fixture = new Fixture(); _fixture.Behaviors .OfType() .ToList() .ForEach(b => _fixture.Behaviors.Remove(b)); _fixture.Behaviors.Add(new OmitOnRecursionBehavior()); } [Test] public void Given_ValidInvitation_When_Validate_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_Validate_Then_Returns_False() { // Act & Assert Assert.Throws>( () => _messageValidator.Validate(default)); Assert.That(_messageValidator.TryValidate(default), Is.False); } [Test] public void Given_EmptyInvitationId_When_Validate_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_Validate_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_InvalidEndDatesAndIsActive_When_Validate_Then_Returns_False() { // Arrange var invitation = _fixture.Create(); invitation.EndDate = invitation.DateCreated.AddDays(-1); invitation.IsActive = true; // Act & Assert Assert.Throws>( () => _messageValidator.Validate(invitation)); Assert.That(_messageValidator.TryValidate(invitation), Is.False); } [Test] public void Given_InvalidMaxParticipantsAndIsActive_When_Validate_Then_Returns_False() { // Arrange var invitation = _fixture.Create(); invitation.MaxParticipants = new Random().Next(-5, 0); invitation.IsActive = true; // Act & Assert Assert.Throws>( () => _messageValidator.Validate(invitation)); Assert.That(_messageValidator.TryValidate(invitation), Is.False); } [Test] public void Given_InvalidCode_When_Validate_Then_Returns_False() { // Arrange var invitation = _fixture.Create(); invitation.Code = string.Empty; // Act & Assert Assert.Throws>( () => _messageValidator.Validate(invitation)); Assert.That(_messageValidator.TryValidate(invitation), Is.False); } }