Initial cloud-services repo - gateway service + pkg modules
This commit is contained in:
211
pkg/redis/redisutils/cache_set_test.go
Normal file
211
pkg/redis/redisutils/cache_set_test.go
Normal file
@@ -0,0 +1,211 @@
|
||||
package redisutils_test
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"fiskerinc.com/modules/redis/redisutils"
|
||||
"fiskerinc.com/modules/redis/tester"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestGetCacheSet(t *testing.T) {
|
||||
key := "someKey"
|
||||
redisMock := tester.NewRedisMock()
|
||||
|
||||
tests := map[string]struct {
|
||||
getResults map[string]map[string]interface{}
|
||||
batchError error
|
||||
expRes map[string]struct{}
|
||||
expError error
|
||||
}{
|
||||
"correct": {
|
||||
getResults: map[string]map[string]interface{}{
|
||||
"EXISTS": {
|
||||
key: int64(1),
|
||||
},
|
||||
"SMEMBERS": {
|
||||
key: []interface{}{
|
||||
[]byte("609:ESP_ActvSig_DTC"),
|
||||
[]byte("832:ADAS_FltIndcr"),
|
||||
[]byte("832:ADAS_IntegtCrsFltTxt"),
|
||||
},
|
||||
},
|
||||
},
|
||||
expRes: map[string]struct{}{
|
||||
"609:ESP_ActvSig_DTC": {},
|
||||
"832:ADAS_FltIndcr": {},
|
||||
"832:ADAS_IntegtCrsFltTxt": {},
|
||||
},
|
||||
},
|
||||
"key_doesnt_exist": {
|
||||
getResults: map[string]map[string]interface{}{
|
||||
"EXISTS": {
|
||||
key: int64(0),
|
||||
},
|
||||
},
|
||||
expError: redisutils.ErrCacheDoesntExist,
|
||||
},
|
||||
"batch_error": {
|
||||
batchError: errors.New("some error"),
|
||||
expError: errors.New("some error"),
|
||||
},
|
||||
"wrong_batch_first_elem": {
|
||||
getResults: map[string]map[string]interface{}{
|
||||
"EXISTS": {
|
||||
key: 1,
|
||||
},
|
||||
"SMEMBERS": {
|
||||
key: []interface{}{},
|
||||
},
|
||||
},
|
||||
expError: errors.New("expected type: int64, got: 1: wrong response format"),
|
||||
},
|
||||
"wrong_batch_second_elem": {
|
||||
getResults: map[string]map[string]interface{}{
|
||||
"EXISTS": {
|
||||
key: int64(1),
|
||||
},
|
||||
"SMEMBERS": {
|
||||
key: 1,
|
||||
},
|
||||
},
|
||||
expError: errors.New("expected type: []interface{}, got: 1: wrong response format"),
|
||||
},
|
||||
"wrong_batch_second_sub_elem": {
|
||||
getResults: map[string]map[string]interface{}{
|
||||
"EXISTS": {
|
||||
key: int64(1),
|
||||
},
|
||||
"SMEMBERS": {
|
||||
key: []interface{}{1},
|
||||
},
|
||||
},
|
||||
expError: errors.New("expected type: []byte, got: 1: wrong response format"),
|
||||
},
|
||||
}
|
||||
|
||||
for name, tt := range tests {
|
||||
t.Run(name, func(t *testing.T) {
|
||||
redisMock.GetCommandResult = tt.getResults
|
||||
redisMock.Error = tt.batchError
|
||||
|
||||
cSet := redisutils.CachedSet{}
|
||||
cSet.SetConnection(redisMock)
|
||||
|
||||
res, err := cSet.GetCachedSet(key)
|
||||
if err != nil && tt.expError != nil {
|
||||
assert.Equal(t, tt.expError.Error(), err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
assert.Equal(t, tt.expError, err)
|
||||
assert.Equal(t, tt.expRes, res)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestCreateSetCache(t *testing.T) {
|
||||
redisMock := tester.NewRedisMock()
|
||||
mockTime := time.Date(2022, 8, 11, 15, 53, 0, 0, time.UTC)
|
||||
|
||||
tests := map[string]struct {
|
||||
cacheValues []interface{}
|
||||
batchError error
|
||||
expSetValues map[string]tester.ExpiringCache
|
||||
expError error
|
||||
}{
|
||||
"correct": {
|
||||
cacheValues: []interface{}{
|
||||
"609:ESP_ActvSig_DTC",
|
||||
"832:ADAS_FltIndcr",
|
||||
"832:ADAS_IntegtCrsFltTxt",
|
||||
},
|
||||
expSetValues: map[string]tester.ExpiringCache{
|
||||
"someKey": {
|
||||
Value: []interface{}{
|
||||
"609:ESP_ActvSig_DTC",
|
||||
"832:ADAS_FltIndcr",
|
||||
"832:ADAS_IntegtCrsFltTxt",
|
||||
},
|
||||
Expires: 1660233180,
|
||||
},
|
||||
},
|
||||
},
|
||||
"fail": {
|
||||
batchError: errors.New("some error"),
|
||||
expError: errors.New("some error"),
|
||||
},
|
||||
}
|
||||
|
||||
for name, tt := range tests {
|
||||
t.Run(name, func(t *testing.T) {
|
||||
redisMock.Reset()
|
||||
redisMock.Error = tt.batchError
|
||||
|
||||
cSet := redisutils.CachedSet{}
|
||||
cSet.SetConnection(redisMock)
|
||||
|
||||
err := cSet.CreateSetCache("someKey", tt.cacheValues, mockTime)
|
||||
if err != nil && tt.expError != nil {
|
||||
assert.Equal(t, tt.expError.Error(), err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
assert.Equal(t, tt.expError, err)
|
||||
assert.Equal(t, tt.expSetValues, redisMock.SetValues)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestUpdateSetCache(t *testing.T) {
|
||||
redisMock := tester.NewRedisMock()
|
||||
|
||||
tests := map[string]struct {
|
||||
cacheValues []interface{}
|
||||
execError error
|
||||
expSetValues map[string]tester.ExpiringCache
|
||||
expError error
|
||||
}{
|
||||
"correct": {
|
||||
cacheValues: []interface{}{
|
||||
"609:ESP_ActvSig_DTC",
|
||||
"832:ADAS_FltIndcr",
|
||||
"832:ADAS_IntegtCrsFltTxt",
|
||||
},
|
||||
expSetValues: map[string]tester.ExpiringCache{
|
||||
"someKey": {
|
||||
Value: []interface{}{
|
||||
"609:ESP_ActvSig_DTC",
|
||||
"832:ADAS_FltIndcr",
|
||||
"832:ADAS_IntegtCrsFltTxt",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
"fail": {
|
||||
execError: errors.New("some error"),
|
||||
expError: errors.New("some error"),
|
||||
},
|
||||
}
|
||||
|
||||
for name, tt := range tests {
|
||||
t.Run(name, func(t *testing.T) {
|
||||
redisMock.Reset()
|
||||
redisMock.Error = tt.execError
|
||||
|
||||
cSet := redisutils.CachedSet{}
|
||||
cSet.SetConnection(redisMock)
|
||||
|
||||
err := cSet.UpdateSetCache("someKey", tt.cacheValues)
|
||||
if err != nil && tt.expError != nil {
|
||||
assert.Equal(t, tt.expError.Error(), err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
assert.Equal(t, tt.expError, err)
|
||||
assert.Equal(t, tt.expSetValues, redisMock.SetValues)
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user