influx-cli/pkg/template/table_printer_test.go
2021-06-24 11:31:19 -04:00

71 lines
2.2 KiB
Go

package template_test
import (
"bytes"
"testing"
"github.com/influxdata/influx-cli/v2/pkg/template"
"github.com/stretchr/testify/require"
)
func TestTablePrinter_Empty(t *testing.T) {
t.Parallel()
out := bytes.Buffer{}
printer := template.NewTablePrinter(&out, false, true).
Title("Example").
SetHeaders("Wow", "Such", "A", "Fancy", "Printer")
printer.Render()
require.Empty(t, out.String())
}
func TestTablePrinter(t *testing.T) {
t.Parallel()
out := bytes.Buffer{}
printer := template.NewTablePrinter(&out, false, true).
Title("Example").
SetHeaders("Wow", "Such", "A", "Fancy", "Printer")
printer.Append([]string{"foo", "bar", "baz", "qux", "wat"})
printer.Append([]string{"veryveryverylongggg", "", "a", "b", "c"})
printer.Render()
expected := `EXAMPLE
+---------------------+------+-----+-------+---------+
| WOW | SUCH | A | FANCY | PRINTER |
+---------------------+------+-----+-------+---------+
| foo | bar | baz | qux | wat |
+---------------------+------+-----+-------+---------+
| veryveryverylongggg | | a | b | c |
+---------------------+------+-----+-------+---------+
| TOTAL | 2 |
+---------------------+------+-----+-------+---------+
`
require.Equal(t, expected, out.String())
}
func TestTablePrinter_Description(t *testing.T) {
t.Parallel()
out := bytes.Buffer{}
printer := template.NewTablePrinter(&out, false, true).
Title("Example").
SetHeaders("Wow", "Such", "A", "Fancy", "Description")
printer.Append([]string{"once", "upon", "a", "time", "short description"})
printer.Render()
// Expect that the description is left-aligned with a min width.
expected := `EXAMPLE
+------+------+---+-------+--------------------------------+
| WOW | SUCH | A | FANCY | DESCRIPTION |
+------+------+---+-------+--------------------------------+
| once | upon | a | time | short description |
+------+------+---+-------+--------------------------------+
| TOTAL | 1 |
+------+------+---+-------+--------------------------------+
`
require.Equal(t, expected, out.String())
}