package app import ( "context" "testing" "time" "galaxy/lobby/internal/config" "github.com/alicebob/miniredis/v2" "github.com/stretchr/testify/require" ) func TestPingRedisSucceedsAgainstMiniredis(t *testing.T) { t.Parallel() server := miniredis.RunT(t) redisCfg := config.RedisConfig{ Addr: server.Addr(), OperationTimeout: time.Second, } client := newRedisClient(redisCfg) t.Cleanup(func() { _ = client.Close() }) require.NoError(t, pingRedis(context.Background(), redisCfg, client)) } func TestPingRedisReturnsErrorWhenClosed(t *testing.T) { t.Parallel() server := miniredis.RunT(t) redisCfg := config.RedisConfig{ Addr: server.Addr(), OperationTimeout: time.Second, } client := newRedisClient(redisCfg) require.NoError(t, client.Close()) err := pingRedis(context.Background(), redisCfg, client) require.Error(t, err) } func TestPingRedisNilClient(t *testing.T) { t.Parallel() err := pingRedis(context.Background(), config.RedisConfig{OperationTimeout: time.Second}, nil) require.Error(t, err) require.Contains(t, err.Error(), "nil client") } func TestInstrumentRedisClientNilClient(t *testing.T) { t.Parallel() err := instrumentRedisClient(nil, nil) require.Error(t, err) require.Contains(t, err.Error(), "nil client") } func TestInstrumentRedisClientNilTelemetryIsNoop(t *testing.T) { t.Parallel() server := miniredis.RunT(t) client := newRedisClient(config.RedisConfig{ Addr: server.Addr(), OperationTimeout: time.Second, }) t.Cleanup(func() { _ = client.Close() }) require.NoError(t, instrumentRedisClient(client, nil)) }