using AyCode.Core.Extensions;
using AyCode.Services.SignalRs;
namespace AyCode.Services.Server.Tests.SignalRs;
///
/// Captured sent message for assertions.
///
public record SentMessage(
int MessageTag,
ISignalRMessage Message,
int? RequestId,
SendTarget Target,
string? TargetId = null)
{
public SignalResponseDataMessage? AsDataResponse => Message as SignalResponseDataMessage;
}
///
/// Target of the sent message.
///
public enum SendTarget
{
Caller,
Client,
Others,
All,
User,
Group
}
///
/// Helper methods for creating SignalR test messages.
///
public static class SignalRTestHelper
{
public static byte[] CreatePrimitiveParamsMessage(params object[] values)
{
return SignalRSerializationHelper.SerializeParametersToBinary(values);
}
public static byte[] CreateSinglePrimitiveMessage(T value) where T : notnull
=> CreatePrimitiveParamsMessage(value);
public static byte[] CreateComplexObjectMessage(T obj)
{
return SignalRSerializationHelper.SerializeParametersToBinary(new object[] { obj! });
}
public static byte[] CreateEmptyMessage()
{
return SignalRSerializationHelper.SerializeParametersToBinary(Array.Empty