github.com/etecs-ru/gnomock@v0.13.2/preset/cockroachdb/preset_test.go (about) 1 package cockroachdb_test 2 3 import ( 4 "database/sql" 5 "fmt" 6 "testing" 7 8 "github.com/etecs-ru/gnomock" 9 "github.com/etecs-ru/gnomock/preset/cockroachdb" 10 "github.com/stretchr/testify/require" 11 ) 12 13 func TestPreset(t *testing.T) { 14 t.Parallel() 15 16 for _, version := range []string{"v19.2.11", "v20.1.10"} { 17 t.Run(version, testPreset(version)) 18 } 19 } 20 21 func testPreset(version string) func(t *testing.T) { 22 return func(t *testing.T) { 23 queries := ` 24 insert into t (a) values (1); 25 insert into t (a) values (2); 26 ` 27 query := `insert into t (a) values (3);` 28 p := cockroachdb.Preset( 29 cockroachdb.WithDatabase("gnomock"), 30 cockroachdb.WithQueries(queries, query), 31 cockroachdb.WithQueriesFile("./testdata/queries.sql"), 32 cockroachdb.WithVersion(version), 33 ) 34 35 container, err := gnomock.Start(p) 36 require.NoError(t, err) 37 38 defer func() { require.NoError(t, gnomock.Stop(container)) }() 39 40 connStr := fmt.Sprintf( 41 "host=%s port=%d user=root dbname=%s sslmode=disable", 42 container.Host, container.DefaultPort(), "gnomock", 43 ) 44 45 db, err := sql.Open("postgres", connStr) 46 require.NoError(t, err) 47 48 var max, avg, min, count float64 49 50 rows := db.QueryRow("select max(a), avg(a), min(a), count(a) from t") 51 require.NoError(t, rows.Scan(&max, &avg, &min, &count)) 52 53 require.Equal(t, float64(3), max) 54 require.Equal(t, float64(2), avg) 55 require.Equal(t, float64(1), min) 56 require.Equal(t, float64(3), count) 57 } 58 } 59 60 func TestPreset_withDefaults(t *testing.T) { 61 t.Parallel() 62 63 container, err := gnomock.Start(cockroachdb.Preset()) 64 65 defer func() { require.NoError(t, gnomock.Stop(container)) }() 66 67 require.NoError(t, err) 68 69 connStr := fmt.Sprintf( 70 "host=%s port=%d user=root dbname=%s sslmode=disable", 71 container.Host, container.DefaultPort(), "mydb", 72 ) 73 74 db, err := sql.Open("postgres", connStr) 75 require.NoError(t, err) 76 require.NoError(t, db.Close()) 77 } 78 79 func TestPreset_wrongQueriesFile(t *testing.T) { 80 t.Parallel() 81 82 p := cockroachdb.Preset( 83 cockroachdb.WithQueriesFile("./invalid"), 84 ) 85 c, err := gnomock.Start(p) 86 require.Error(t, err) 87 require.Contains(t, err.Error(), "can't read queries file") 88 require.NoError(t, gnomock.Stop(c)) 89 }