using IM.Domain.Entities;
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 Conversation BuildConversation(
Guid id,
ConversationType type,
params (Guid UserId, int UnreadCount)[] participants)
{
var now = DateTime.UtcNow;
var conv = new Conversation
{
Id = id,
Type = type,
CreatedBy = SystemUser,
CreatedAt = now,
UpdatedBy = SystemUser,
UpdatedAt = now,
OperatorIP = LocalIp,
};
foreach (var (userId, unread) in participants)
{
conv.Participants.Add(new ConversationParticipant
{
ConversationId = id,
UserId = userId,
UnreadCount = unread,
JoinedAt = now,
CreatedBy = SystemUser,
CreatedAt = now,
UpdatedBy = SystemUser,
UpdatedAt = now,
});
}
return conv;
}
}