public async Task GetEntityChangesWithUsernameAsync() { // Arrange var userId = new Guid("4456fb0d-74cc-4807-9eee-23e551e6cb06"); var userId2 = new Guid("4456fb0d-74cc-4807-9eee-23e551e6cb06"); var ipAddress = "153.1.7.61"; var firstComment = "first Comment"; var firstUser = "******"; var secondUser = "******"; var entityId = Guid.NewGuid().ToString(); var entityType = "Volo.Abp.AuditLogging.TestEntity"; var log1 = new AuditLogInfo { UserId = userId, ImpersonatorUserId = Guid.NewGuid(), ImpersonatorTenantId = Guid.NewGuid(), ExecutionTime = DateTime.Today, ExecutionDuration = 42, ClientIpAddress = ipAddress, ClientName = "MyDesktop", BrowserInfo = "Chrome", Comments = new List <string> { firstComment, "Second Comment" }, UserName = firstUser, EntityChanges = { new EntityChangeInfo { EntityId = entityId, EntityTypeFullName = entityType, ChangeType = EntityChangeType.Created, ChangeTime = DateTime.Now, PropertyChanges = new List <EntityPropertyChangeInfo> { new EntityPropertyChangeInfo { PropertyTypeFullName = typeof(string).FullName, PropertyName = "Name", NewValue = "New value", OriginalValue = null } } }, new EntityChangeInfo { EntityId = Guid.NewGuid().ToString(), EntityTypeFullName = "Volo.Abp.AuditLogging.TestEntity", ChangeType = EntityChangeType.Created, ChangeTime = DateTime.Now, PropertyChanges = new List <EntityPropertyChangeInfo> { new EntityPropertyChangeInfo { PropertyTypeFullName = typeof(string).FullName, PropertyName = "Name", NewValue = "New value", OriginalValue = null } } } } }; var log2 = new AuditLogInfo { UserId = userId2, ImpersonatorUserId = Guid.NewGuid(), ImpersonatorTenantId = Guid.NewGuid(), ExecutionTime = DateTime.Today, ExecutionDuration = 42, ClientIpAddress = ipAddress, ClientName = "MyDesktop", BrowserInfo = "Chrome", Comments = new List <string> { firstComment, "Second Comment" }, HttpStatusCode = (int?)HttpStatusCode.Accepted, UserName = secondUser, EntityChanges = { new EntityChangeInfo { EntityId = entityId, EntityTypeFullName = entityType, ChangeType = EntityChangeType.Updated, ChangeTime = DateTime.Now, PropertyChanges = new List <EntityPropertyChangeInfo> { new EntityPropertyChangeInfo { PropertyTypeFullName = typeof(string).FullName, PropertyName = "Name", NewValue = "New value", OriginalValue = null } } } } }; await AuditLogRepository.InsertAsync(await AuditLogInfoToAuditLogConverter.ConvertAsync(log1)); await AuditLogRepository.InsertAsync(await AuditLogInfoToAuditLogConverter.ConvertAsync(log2)); //Assert var entityHistory = await AuditLogRepository.GetEntityChangesWithUsernameAsync(entityId, entityType); entityHistory.Count.ShouldBe(2); var firstUserChange = entityHistory.First(x => x.UserName == firstUser); firstUserChange.ShouldNotBeNull(); firstUserChange.EntityChange.ShouldNotBeNull(); firstUserChange.EntityChange.ChangeType.ShouldBe(EntityChangeType.Created); var secondUserChange = entityHistory.First(x => x.UserName == secondUser); secondUserChange.ShouldNotBeNull(); secondUserChange.EntityChange.ShouldNotBeNull(); secondUserChange.EntityChange.ChangeType.ShouldBe(EntityChangeType.Updated); }