using FluentValidation.TestHelper; using TakeoutSaaS.Application.App.Tenants.Validators; using TakeoutSaaS.Application.Tests.TestUtilities; namespace TakeoutSaaS.Application.Tests.App.Tenants.Validators; public sealed class RevokeAnnouncementCommandValidatorTests { private readonly RevokeAnnouncementCommandValidator _validator = new(); [Fact] public void GivenAnnouncementIdZero_WhenValidate_ThenShouldHaveError() { // Arrange var command = AnnouncementTestData.CreateValidRevokeCommand() with { AnnouncementId = 0 }; // Act var result = _validator.TestValidate(command); // Assert result.ShouldHaveValidationErrorFor(x => x.AnnouncementId); } [Fact] public void GivenNullRowVersion_WhenValidate_ThenShouldHaveError() { // Arrange var command = AnnouncementTestData.CreateValidRevokeCommand() with { RowVersion = null! }; // Act var result = _validator.TestValidate(command); // Assert result.ShouldHaveValidationErrorFor(x => x.RowVersion); } [Fact] public void GivenEmptyRowVersion_WhenValidate_ThenShouldHaveError() { // Arrange var command = AnnouncementTestData.CreateValidRevokeCommand() with { RowVersion = Array.Empty() }; // Act var result = _validator.TestValidate(command); // Assert result.ShouldHaveValidationErrorFor(x => x.RowVersion); } [Fact] public void GivenValidCommand_WhenValidate_ThenShouldNotHaveErrors() { // Arrange var command = AnnouncementTestData.CreateValidRevokeCommand(); // Act var result = _validator.TestValidate(command); // Assert result.ShouldNotHaveAnyValidationErrors(); } }