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