using IM.Domain.Common; namespace BuildFlow.IM.Integration.Tests; /// /// 进程内 替身:记录离线触达调用,供断言"仅离线用户收到站内信"。 /// 真实实现走 gRPC 到 rag-backend 通知中心,测试环境不依赖该服务。 /// public sealed class FakeImNotificationPublisher : IImNotificationPublisher { public sealed record Call(string Type, string Title, string Content, Guid ConversationId, IReadOnlyList Recipients); public List Calls { get; } = new(); public Task PublishAsync( string type, string title, string content, Guid conversationId, IEnumerable recipientUserIds, CancellationToken ct = default) { var list = recipientUserIds.ToList(); lock (Calls) { Calls.Add(new Call(type, title, content, conversationId, list)); } return Task.FromResult(list.Count); } public void Reset() { lock (Calls) Calls.Clear(); } }