github.com/rudderlabs/rudder-go-kit@v0.30.0/sqlutil/printrows_test.go (about) 1 package sqlutil_test 2 3 import ( 4 "bytes" 5 "fmt" 6 "testing" 7 8 "github.com/ory/dockertest/v3" 9 "github.com/stretchr/testify/require" 10 11 "github.com/rudderlabs/rudder-go-kit/sqlutil" 12 pgdocker "github.com/rudderlabs/rudder-go-kit/testhelper/docker/resource/postgres" 13 ) 14 15 func TestPrintRowsToTable(t *testing.T) { 16 pool, err := dockertest.NewPool("") 17 require.NoError(t, err) 18 postgres, err := pgdocker.Setup(pool, t) 19 require.NoError(t, err) 20 21 _, err = postgres.DB.Exec(`CREATE TABLE users ( 22 id SERIAL PRIMARY KEY, 23 name TEXT NOT NULL, 24 age INT NOT NULL, 25 info JSONB 26 )`) 27 require.NoError(t, err) 28 _, err = postgres.DB.Exec(`INSERT INTO users (name, age, info) VALUES ('John Doe', 20, '{"email": "jdoe@example.com"}')`) 29 require.NoError(t, err) 30 _, err = postgres.DB.Exec(`INSERT INTO users (name, age, info) VALUES ('Eva Chung', 20, '{"email": "echung@example.com"}')`) 31 require.NoError(t, err) 32 33 var out bytes.Buffer 34 rows, err := postgres.DB.Query(`SELECT * FROM users`) 35 require.NoError(t, err) 36 err = rows.Err() 37 require.NoError(t, err) 38 defer func() { _ = rows.Close() }() 39 err = sqlutil.PrintRowsToTable(rows, &out) 40 require.NoError(t, err) 41 fmt.Println(out.String()) 42 require.Equal(t, 43 ` | id| name| age| info| 44 | ---| ---| ---| ---| 45 | 1| John Doe| 20| {"email": "jdoe@example.com"}| 46 | 2| Eva Chung| 20| {"email": "echung@example.com"}| 47 `, out.String()) 48 }