github.com/etecs-ru/gnomock@v0.13.2/preset/postgres/preset_test.go (about) 1 package postgres_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/postgres" 10 "github.com/stretchr/testify/require" 11 ) 12 13 func TestPreset(t *testing.T) { 14 t.Parallel() 15 16 for _, version := range []string{"10.15", "11.10", "12.5", "13.1"} { 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 := postgres.Preset( 29 postgres.WithUser("gnomock", "gnomick"), 30 postgres.WithDatabase("mydb"), 31 postgres.WithQueries(queries, query), 32 postgres.WithQueriesFile("./testdata/queries.sql"), 33 postgres.WithVersion(version), 34 ) 35 36 container, err := gnomock.Start(p) 37 require.NoError(t, err) 38 39 defer func() { require.NoError(t, gnomock.Stop(container)) }() 40 41 connStr := fmt.Sprintf( 42 "host=%s port=%d user=%s password=%s dbname=%s sslmode=disable", 43 container.Host, container.DefaultPort(), 44 "gnomock", "gnomick", "mydb", 45 ) 46 47 db, err := sql.Open("postgres", connStr) 48 require.NoError(t, err) 49 50 var max, avg, min, count float64 51 52 rows := db.QueryRow("select max(a), avg(a), min(a), count(a) from t") 53 require.NoError(t, rows.Scan(&max, &avg, &min, &count)) 54 55 require.Equal(t, float64(3), max) 56 require.Equal(t, float64(2), avg) 57 require.Equal(t, float64(1), min) 58 require.Equal(t, float64(3), count) 59 } 60 } 61 62 func TestPreset_withDefaults(t *testing.T) { 63 t.Parallel() 64 65 p := postgres.Preset() 66 container, err := gnomock.Start(p) 67 require.NoError(t, err) 68 69 defer func() { require.NoError(t, gnomock.Stop(container)) }() 70 71 connStr := fmt.Sprintf( 72 "host=%s port=%d user=%s password=%s dbname=%s sslmode=disable", 73 container.Host, container.DefaultPort(), 74 "gnomock", "gnomick", "mydb", 75 ) 76 77 db, err := sql.Open("postgres", connStr) 78 require.NoError(t, err) 79 require.NoError(t, db.Close()) 80 } 81 82 func TestPreset_wrongQueriesFile(t *testing.T) { 83 t.Parallel() 84 85 p := postgres.Preset( 86 postgres.WithQueriesFile("./invalid"), 87 ) 88 c, err := gnomock.Start(p) 89 require.Error(t, err) 90 require.Contains(t, err.Error(), "can't read queries file") 91 require.NoError(t, gnomock.Stop(c)) 92 }