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  }