108 lines
2.3 KiB
Go
108 lines
2.3 KiB
Go
package cachev2_test
|
|
|
|
import (
|
|
"encoding/json"
|
|
"testing"
|
|
|
|
cache "fiskerinc.com/modules/cachev2"
|
|
"fiskerinc.com/modules/db/queries"
|
|
"fiskerinc.com/modules/db/queries/mocks"
|
|
"fiskerinc.com/modules/redis/tester"
|
|
redis "fiskerinc.com/modules/redisv2"
|
|
"fiskerinc.com/modules/testhelper"
|
|
)
|
|
|
|
var mockRedis redis.Client
|
|
var mockDB queries.CarsInterface
|
|
|
|
func setupRedisMock() {
|
|
redis.MockRedisConnection()
|
|
}
|
|
|
|
func setupDBMock() {
|
|
mockDB = &mocks.MockCars{}
|
|
}
|
|
|
|
type mockRedisCache struct {
|
|
redis.Connection
|
|
}
|
|
|
|
func (c *mockRedisCache) GetSet(id string, data interface{}) error {
|
|
drivers := []string{"valid-id-1", "valid-id-2", "valid-id-3"}
|
|
|
|
dataBytes, err := json.Marshal(drivers)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
err = json.Unmarshal(dataBytes, data)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
type mockRedisEmptyCache struct {
|
|
redis.Connection
|
|
}
|
|
|
|
func (c *mockRedisEmptyCache) GetSet(id string, data interface{}) error {
|
|
drivers := []string{}
|
|
|
|
dataBytes, err := json.Marshal(drivers)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
err = json.Unmarshal(dataBytes, data)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (c *mockRedisEmptyCache) SetObjects(id []string, data []interface{}, expire int) error {
|
|
return nil
|
|
}
|
|
|
|
func TestRetrieveAndCacheDriverIDs(t *testing.T) {
|
|
setupRedisMock()
|
|
setupDBMock()
|
|
mockRedis = &mockRedisCache{}
|
|
redisPool := tester.NewMockClientPool(mockRedis)
|
|
drivers := cache.NewDriversCache(redisPool, mockDB)
|
|
|
|
_, err := drivers.RetrieveDriverIDs("FISKER123")
|
|
if err != nil {
|
|
t.Errorf(testhelper.TestErrorTemplate, "TestRetrieveAndCacheDriverIDs", "no error", err)
|
|
}
|
|
|
|
mockRedis = &mockRedisEmptyCache{}
|
|
_, err = drivers.RetrieveDriverIDs("FISKER456")
|
|
if err != nil {
|
|
t.Errorf(testhelper.TestErrorTemplate, "TestRetrieveAndCacheDriverIDs", "no error", err)
|
|
}
|
|
}
|
|
|
|
func TestRetrieveAndCacheDriverIDsAsSet(t *testing.T) {
|
|
setupRedisMock()
|
|
setupDBMock()
|
|
mockRedis = &mockRedisCache{}
|
|
redisPool := tester.NewMockClientPool(mockRedis)
|
|
|
|
drivers := cache.NewDriversCache(redisPool, mockDB)
|
|
|
|
_, err := drivers.RetrieveDriverIDs("FISKER123")
|
|
if err != nil {
|
|
t.Errorf(testhelper.TestErrorTemplate, "TestRetrieveAndCacheDriverIDs", "no error", err)
|
|
}
|
|
|
|
mockRedis = &mockRedisEmptyCache{}
|
|
_, err = drivers.RetrieveDriverIDsAsSet("FISKER456")
|
|
if err != nil {
|
|
t.Errorf(testhelper.TestErrorTemplate, "TestRetrieveAndCacheDriverIDs", "no error", err)
|
|
}
|
|
}
|