modelRT/handler/data_object_redis_change_te...

80 lines
2.1 KiB
Go
Raw Normal View History

package handler
import (
"testing"
"modelRT/constants"
"github.com/redis/go-redis/v9"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestDataObjectRedisAliasKeys(t *testing.T) {
parameterKeys, err := dataObjectRedisAliasKeys(
constants.DataObjectTypeParameter,
"grid.zone.station.nspath.component.rated.voltage",
"nspath.component.rated.voltage",
)
require.NoError(t, err)
assert.Equal(t, []string{
"grid.zone.station.nspath.component.rated.voltage",
"nspath.component.rated.voltage",
}, parameterKeys)
measurementKeys, err := dataObjectRedisAliasKeys(
constants.DataObjectTypeMeasurement,
"grid.zone.station.nspath.component.bay.current",
"nspath.current",
)
require.NoError(t, err)
assert.Equal(t, []string{
"grid.zone.station.nspath.component.bay.current",
"nspath.component.bay.current",
"nspath.current",
}, measurementKeys)
}
func TestDataObjectRedisAliasKeysRejectsInvalidMetadata(t *testing.T) {
_, err := dataObjectRedisAliasKeys(constants.DataObjectTypeParameter, "short.id", "short.name")
require.Error(t, err)
_, err = dataObjectRedisAliasKeys(constants.DataObjectTypeMeasurement, "short.id", "short.name")
require.Error(t, err)
}
func TestRedisChangeStringUsesCacheRepresentations(t *testing.T) {
tests := []struct {
name string
value any
want string
}{
{name: "string", value: "15.2", want: "15.2"},
{name: "integer", value: int64(15), want: "15"},
{name: "decimal", value: 15.2, want: "15.2"},
{name: "boolean", value: true, want: "true"},
{name: "object", value: map[string]any{"enabled": true}, want: `{"enabled":true}`},
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
got, err := redisChangeString(test.value)
require.NoError(t, err)
assert.Equal(t, test.want, got)
})
}
}
func TestMergeRedisZValuesReplacesDuplicateMemberAndSorts(t *testing.T) {
values := mergeRedisZValues(
[]redis.Z{
{Score: 20, Member: "2"},
{Score: 10, Member: "1"},
},
redis.Z{Score: 30, Member: "1"},
)
assert.Equal(t, []redis.Z{
{Score: 20, Member: "2"},
{Score: 30, Member: "1"},
}, values)
}