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(); }
}