using Xunit; using KArtSell.Modules.IdentityAccess.ManageIdentityAndRoles.Events; namespace KArtSell.IdentityAccess.Tests.Features; public class IdentityCreatedEventTests { [Fact] public void IdentityCreated_Create_ReturnsValidRecord() { var identityId = Guid.NewGuid(); var email = "test@example.com"; var displayName = "Test User"; var correlationId = Guid.NewGuid().ToString(); var occurredAt = DateTime.UtcNow; var @event = new IdentityCreated { IdentityId = identityId, Email = email, DisplayName = displayName, CorrelationId = correlationId, OccurredAt = occurredAt }; Assert.Equal(identityId, @event.IdentityId); Assert.Equal(email, @event.Email); Assert.Equal(displayName, @event.DisplayName); Assert.Equal(correlationId, @event.CorrelationId); Assert.Equal(occurredAt, @event.OccurredAt); } [Fact] public void IdentityCreated_Immutability_RecordBehavior() { var event1 = new IdentityCreated { IdentityId = Guid.NewGuid(), Email = "test1@example.com", DisplayName = "Test 1", CorrelationId = "corr-1", OccurredAt = DateTime.UtcNow }; var event2 = event1 with { Email = "test2@example.com" }; Assert.NotEqual(event1.Email, event2.Email); Assert.Equal(event1.IdentityId, event2.IdentityId); } [Fact] public void IdentityCreated_Equality_SameValuesAreEqual() { var id = Guid.NewGuid(); var email = "test@example.com"; var displayName = "Test User"; var correlationId = "corr-123"; var occurredAt = new DateTime(2026, 8, 17, 12, 0, 0, DateTimeKind.Utc); var event1 = new IdentityCreated { IdentityId = id, Email = email, DisplayName = displayName, CorrelationId = correlationId, OccurredAt = occurredAt }; var event2 = new IdentityCreated { IdentityId = id, Email = email, DisplayName = displayName, CorrelationId = correlationId, OccurredAt = occurredAt }; Assert.Equal(event1, event2); } [Fact] public void IdentityCreated_Serialization_CanRoundTrip() { var @event = new IdentityCreated { IdentityId = Guid.NewGuid(), Email = "test@example.com", DisplayName = "Test User", CorrelationId = Guid.NewGuid().ToString(), OccurredAt = DateTime.UtcNow }; var json = System.Text.Json.JsonSerializer.Serialize(@event); var deserialized = System.Text.Json.JsonSerializer.Deserialize(json); Assert.NotNull(deserialized); Assert.Equal(@event.IdentityId, deserialized.IdentityId); Assert.Equal(@event.Email, deserialized.Email); Assert.Equal(@event.DisplayName, deserialized.DisplayName); Assert.Equal(@event.CorrelationId, deserialized.CorrelationId); } }