github.com/etecs-ru/gnomock@v0.13.2/preset/mariadb/preset_test.go (about) 1 package mariadb_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/mariadb" 10 "github.com/stretchr/testify/require" 11 ) 12 13 func TestPreset(t *testing.T) { 14 t.Parallel() 15 16 queries := ` 17 insert into t (a) values (1); 18 insert into t (a) values (2); 19 ` 20 query := `insert into t (a) values (3);` 21 p := mariadb.Preset( 22 mariadb.WithUser("Sherlock", "Holmes"), 23 mariadb.WithDatabase("books"), 24 mariadb.WithQueries(queries, query), 25 mariadb.WithQueriesFile("./testdata/queries.sql"), 26 mariadb.WithVersion("10.5.8"), 27 ) 28 29 container, err := gnomock.Start(p) 30 31 defer func() { _ = gnomock.Stop(container) }() 32 33 require.NoError(t, err) 34 35 addr := container.DefaultAddress() 36 connStr := fmt.Sprintf( 37 "%s:%s@tcp(%s)/%s", 38 "Sherlock", "Holmes", addr, "books", 39 ) 40 41 db, err := sql.Open("mysql", connStr) 42 require.NoError(t, err) 43 44 var max, avg, min, count float64 45 46 rows := db.QueryRow("select max(a), avg(a), min(a), count(a) from t") 47 48 err = rows.Scan(&max, &avg, &min, &count) 49 require.NoError(t, err) 50 51 require.Equal(t, float64(3), max) 52 require.Equal(t, float64(2), avg) 53 require.Equal(t, float64(1), min) 54 require.Equal(t, float64(3), count) 55 } 56 57 func TestPreset_withDefaults(t *testing.T) { 58 t.Parallel() 59 60 p := mariadb.Preset() 61 container, err := gnomock.Start(p) 62 63 defer func() { _ = gnomock.Stop(container) }() 64 65 require.NoError(t, err) 66 67 addr := container.DefaultAddress() 68 connStr := fmt.Sprintf( 69 "%s:%s@tcp(%s)/%s", 70 "Sherlock", "Holmes", addr, "books", 71 ) 72 73 db, err := sql.Open("mysql", connStr) 74 require.NoError(t, err) 75 require.NoError(t, db.Close()) 76 }