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  }