github.com/etecs-ru/gnomock@v0.13.2/preset/redis/preset_test.go (about) 1 package redis_test 2 3 import ( 4 "context" 5 "testing" 6 "time" 7 8 "github.com/etecs-ru/gnomock" 9 "github.com/etecs-ru/gnomock/preset/redis" 10 redisclient "github.com/go-redis/redis/v8" 11 "github.com/stretchr/testify/require" 12 ) 13 14 func TestPreset(t *testing.T) { 15 t.Parallel() 16 17 for _, version := range []string{"5.0.10", "6.0.9"} { 18 t.Run(version, testPreset(version)) 19 } 20 } 21 22 func testPreset(version string) func(t *testing.T) { 23 return func(t *testing.T) { 24 vs := make(map[string]interface{}) 25 26 vs["a"] = "foo" 27 vs["b"] = 42 28 vs["c"] = true 29 30 p := redis.Preset( 31 redis.WithValues(vs), 32 redis.WithVersion(version), 33 ) 34 container, err := gnomock.Start(p) 35 36 defer func() { require.NoError(t, gnomock.Stop(container)) }() 37 38 require.NoError(t, err) 39 40 addr := container.DefaultAddress() 41 client := redisclient.NewClient(&redisclient.Options{Addr: addr}) 42 43 var str string 44 45 ctx, cancel := context.WithTimeout(context.Background(), time.Minute) 46 defer cancel() 47 48 require.NoError(t, client.Get(ctx, "a").Scan(&str)) 49 require.Equal(t, "foo", str) 50 51 var number int 52 53 require.NoError(t, client.Get(ctx, "b").Scan(&number)) 54 require.Equal(t, 42, number) 55 56 var flag bool 57 58 require.NoError(t, client.Get(ctx, "c").Scan(&flag)) 59 require.True(t, flag) 60 } 61 } 62 63 func TestRedis_wrongValue(t *testing.T) { 64 t.Parallel() 65 66 vs := map[string]interface{}{"a": []string{"b", "c"}} 67 p := redis.Preset(redis.WithValues(vs)) 68 69 c, err := gnomock.Start(p) 70 71 defer func() { require.NoError(t, gnomock.Stop(c)) }() 72 73 require.Error(t, err) 74 }