using IM.Domain.Entities.Conversation; using IM.Domain.Entities.ConversationParticipant; using IM.Domain.Enums; namespace BuildFlow.IM.Tests; /// /// 测试数据工厂。集中处理 IFullAudit 实体的审计字段填充(InMemory 无 AuditInterceptor 自动补值)。 /// internal static class ImTestData { private const string SystemUser = "system"; private const string LocalIp = "127.0.0.1"; /// 构造一个带参与者的会话,审计字段已补齐。 internal static ConversationEntity BuildConversation( Guid id, ConversationTypeEnum type, params (Guid UserId, int UnreadCount)[] participants) { var now = DateTime.UtcNow; var conv = new ConversationEntity { Id = id, Type = type, CreatedBy = SystemUser, CreatedAt = now, UpdatedBy = SystemUser, UpdatedAt = now, OperatorIP = LocalIp, }; foreach (var (userId, unread) in participants) { conv.Participants.Add(new ConversationParticipantEntity { ConversationId = id, UserId = userId, UnreadCount = unread, JoinedAt = now, CreatedBy = SystemUser, CreatedAt = now, UpdatedBy = SystemUser, UpdatedAt = now, }); } return conv; } }