87 lines
1.7 KiB
Go
87 lines
1.7 KiB
Go
package table
|
|
|
|
import (
|
|
"bytes"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/pkg/errors"
|
|
"gitlab.com/wpetit/goweb/cli/format"
|
|
)
|
|
|
|
type dummyItem struct {
|
|
MyString string
|
|
MyInt int
|
|
MySub subItem
|
|
}
|
|
|
|
type subItem struct {
|
|
MyBool bool
|
|
}
|
|
|
|
var dummyItems = []any{
|
|
dummyItem{
|
|
MyString: "Foo",
|
|
MyInt: 1,
|
|
MySub: subItem{
|
|
MyBool: false,
|
|
},
|
|
},
|
|
dummyItem{
|
|
MyString: "Bar",
|
|
MyInt: 0,
|
|
MySub: subItem{
|
|
MyBool: true,
|
|
},
|
|
},
|
|
}
|
|
|
|
func TestWriterNoHints(t *testing.T) {
|
|
var buf bytes.Buffer
|
|
|
|
writer := NewWriter(DefaultCompactModeMaxColumnWidth)
|
|
|
|
if err := writer.Write(&buf, format.Hints{}, dummyItems...); err != nil {
|
|
t.Fatalf("%+v", errors.WithStack(err))
|
|
}
|
|
|
|
expected := `+----------+-------+------------------+
|
|
| MYSTRING | MYINT | MYSUB |
|
|
+----------+-------+------------------+
|
|
| Foo | 1 | {"MyBool":false} |
|
|
| Bar | 0 | {"MyBool":true} |
|
|
+----------+-------+------------------+`
|
|
|
|
if e, g := strings.TrimSpace(expected), strings.TrimSpace(buf.String()); e != g {
|
|
t.Errorf("buf.String(): expected \n%v\ngot\n%v", e, g)
|
|
}
|
|
}
|
|
|
|
func TestWriterWithPropHints(t *testing.T) {
|
|
var buf bytes.Buffer
|
|
|
|
writer := NewWriter(DefaultCompactModeMaxColumnWidth)
|
|
|
|
hints := format.Hints{
|
|
Props: []format.Prop{
|
|
format.NewProp("MyString", "MyString"),
|
|
format.NewProp("MyInt", "MyInt"),
|
|
},
|
|
}
|
|
|
|
if err := writer.Write(&buf, hints, dummyItems...); err != nil {
|
|
t.Fatalf("%+v", errors.WithStack(err))
|
|
}
|
|
|
|
expected := `+----------+-------+
|
|
| MYSTRING | MYINT |
|
|
+----------+-------+
|
|
| Foo | 1 |
|
|
| Bar | 0 |
|
|
+----------+-------+`
|
|
|
|
if e, g := strings.TrimSpace(expected), strings.TrimSpace(buf.String()); e != g {
|
|
t.Errorf("buf.String(): expected \n%v\ngot\n%v", e, g)
|
|
}
|
|
}
|