using StackExchange.Redis;
using Xunit;
namespace BuildFlow.Rag.Tests.Chat;
/// 管理连接到本地独立基础设施 Redis 的测试连接。
public sealed class RedisChatMessageCacheFixture : IAsyncLifetime
{
private const string DefaultConnection = "127.0.0.1:56379,abortConnect=false";
/// 测试复用的 Redis 连接。
public IConnectionMultiplexer Redis { get; private set; } = default!;
public async Task InitializeAsync()
{
var connection = Environment.GetEnvironmentVariable("BUILDFLOW_RAG_REDIS_TEST_CONNECTION")
?? DefaultConnection;
Redis = await ConnectionMultiplexer.ConnectAsync(connection);
}
public Task DisposeAsync()
{
Redis.Dispose();
return Task.CompletedTask;
}
/// 删除单个测试会话的固定缓存 key。
public Task DeleteAsync(Guid conversationId)
=> Redis.GetDatabase().KeyDeleteAsync(Key(conversationId));
/// 返回生产缓存使用的固定 key。
public static string Key(Guid conversationId) => $"chat:messages:{conversationId}";
}