using FluentAssertions; using MyNewProjectName.Domain.Common; namespace MyNewProjectName.UnitTest.Domain; public class BaseEntityTests { private class TestEntity : BaseEntity { } private class TestDomainEvent : IDomainEvent { public DateTime OccurredOn { get; } = DateTime.UtcNow; } [Fact] public void AddDomainEvent_ShouldAddEventToCollection() { // Arrange var entity = new TestEntity(); var domainEvent = new TestDomainEvent(); // Act entity.AddDomainEvent(domainEvent); // Assert entity.DomainEvents.Should().Contain(domainEvent); entity.DomainEvents.Should().HaveCount(1); } [Fact] public void RemoveDomainEvent_ShouldRemoveEventFromCollection() { // Arrange var entity = new TestEntity(); var domainEvent = new TestDomainEvent(); entity.AddDomainEvent(domainEvent); // Act entity.RemoveDomainEvent(domainEvent); // Assert entity.DomainEvents.Should().BeEmpty(); } [Fact] public void ClearDomainEvents_ShouldRemoveAllEvents() { // Arrange var entity = new TestEntity(); entity.AddDomainEvent(new TestDomainEvent()); entity.AddDomainEvent(new TestDomainEvent()); // Act entity.ClearDomainEvents(); // Assert entity.DomainEvents.Should().BeEmpty(); } }