2026-08-04 17:12:17 +08:00
|
|
|
package redis
|
2026-07-30 15:32:22 +08:00
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
|
|
"github.com/redis/go-redis/v9"
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
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)
|
|
|
|
|
}
|