modelRT/diagram/redis_client_test.go

58 lines
1.6 KiB
Go
Raw Permalink Normal View History

package diagram
import (
"testing"
"github.com/redis/go-redis/v9"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestLatestMeasurementValueUsesMemberTimestamp(t *testing.T) {
value, err := latestMeasurementValue([]redis.Z{
{Member: "100", Score: 999},
{Member: "300", Score: 12},
{Member: "200", Score: 500},
}, "measurement-key")
require.NoError(t, err)
assert.Equal(t, float64(12), value)
}
func TestLatestMeasurementValueRejectsMissingOrInvalidTimestamps(t *testing.T) {
_, err := latestMeasurementValue(nil, "measurement-key")
require.Error(t, err)
_, err = latestMeasurementValue([]redis.Z{{Member: "invalid", Score: 1}}, "measurement-key")
require.Error(t, err)
}
func TestLatestMeasurementValuesReturnsNewestWindow(t *testing.T) {
values, err := latestMeasurementValues([]redis.Z{
{Member: "100", Score: 10},
{Member: "400", Score: 40},
{Member: "invalid", Score: 999},
{Member: "200", Score: 20},
{Member: "300", Score: 30},
}, "measurement-key", 3)
require.NoError(t, err)
assert.Equal(t, []float64{40, 30, 20}, values)
}
func TestLatestMeasurementValuesReturnsAvailableWindow(t *testing.T) {
values, err := latestMeasurementValues([]redis.Z{
{Member: "100", Score: 10},
{Member: "200", Score: 20},
}, "measurement-key", 5)
require.NoError(t, err)
assert.Equal(t, []float64{20, 10}, values)
}
func TestLatestMeasurementValuesRejectsInvalidSize(t *testing.T) {
_, err := latestMeasurementValues([]redis.Z{{Member: "100", Score: 10}}, "measurement-key", 0)
require.Error(t, err)
assert.Contains(t, err.Error(), "window size must be greater than 0")
}