get.porter.sh/porter@v1.3.0/pkg/printer/table_test.go (about)

     1  package printer
     2  
     3  import (
     4  	"bytes"
     5  	"fmt"
     6  	"testing"
     7  
     8  	"get.porter.sh/porter/pkg/test"
     9  	"github.com/stretchr/testify/require"
    10  )
    11  
    12  type testType struct {
    13  	A, B interface{}
    14  }
    15  
    16  func printTestType(r interface{}) []string {
    17  	row, ok := r.(testType)
    18  	if !ok {
    19  		panic("invalid row data passed to printTestType, should be testType")
    20  	}
    21  	return []string{fmt.Sprintf("%v", row.A), fmt.Sprintf("%v", row.B)}
    22  }
    23  
    24  func TestPrintTable(t *testing.T) {
    25  	v := []testType{
    26  		{A: "foo", B: "a really long bit of text that really should be wrapped nicely so that the entire table doesn't expand infinitely wide"},
    27  		{A: "baz", B: "qux"},
    28  		{A: 123, B: true},
    29  	}
    30  
    31  	b := &bytes.Buffer{}
    32  
    33  	err := PrintTable(b, v, printTestType,
    34  		"A", "B")
    35  
    36  	require.NoError(t, err)
    37  	test.CompareGoldenFile(t, "testdata/table-with-headers.txt", b.String())
    38  }
    39  
    40  func TestPrintTable_WithoutHeaders(t *testing.T) {
    41  	v := []testType{
    42  		{A: "foo", B: "bar"},
    43  	}
    44  
    45  	b := &bytes.Buffer{}
    46  
    47  	err := PrintTable(b, v, printTestType)
    48  
    49  	require.NoError(t, err)
    50  	test.CompareGoldenFile(t, "testdata/table-without-headers.txt", b.String())
    51  }