50 lines
1.4 KiB
C#
50 lines
1.4 KiB
C#
using IM.Domain.Entities;
|
||
using IM.Domain.Enums;
|
||
|
||
namespace BuildFlow.IM.Tests;
|
||
|
||
/// <summary>
|
||
/// 测试数据工厂。集中处理 IFullAudit 实体的审计字段填充(InMemory 无 AuditInterceptor 自动补值)。
|
||
/// </summary>
|
||
internal static class ImTestData
|
||
{
|
||
private const string SystemUser = "system";
|
||
private const string LocalIp = "127.0.0.1";
|
||
|
||
/// <summary>构造一个带参与者的会话,审计字段已补齐。</summary>
|
||
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;
|
||
}
|
||
}
|