Breite im Terminal begrenzen
This commit is contained in:
58
internal/formatter/table_test.go
Normal file
58
internal/formatter/table_test.go
Normal file
@@ -0,0 +1,58 @@
|
||||
package formatter
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"royalroadupdates/internal/royalroad"
|
||||
)
|
||||
|
||||
func TestPrintTableTruncation(t *testing.T) {
|
||||
stories := []royalroad.Story{
|
||||
{
|
||||
Name: "Short Name",
|
||||
DateModified: time.Now(),
|
||||
},
|
||||
{
|
||||
Name: "This is a very long story name that should definitely be truncated if the column width is restricted",
|
||||
DateModified: time.Now(),
|
||||
},
|
||||
{
|
||||
Name: "Unicode Story 🌟 Sparkle",
|
||||
DateModified: time.Now(),
|
||||
},
|
||||
}
|
||||
|
||||
t.Run("Natural width (no terminal)", func(t *testing.T) {
|
||||
var buf bytes.Buffer
|
||||
PrintTable(&buf, stories)
|
||||
out := buf.String()
|
||||
|
||||
expectedLongName := "This is a very long story name that should definitely be truncated if the column width is restricted"
|
||||
if !strings.Contains(out, expectedLongName) {
|
||||
t.Errorf("Expected output to contain full long name when not truncated, but it didn't. Output:\n%s", out)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("Check relative time alignment", func(t *testing.T) {
|
||||
var buf bytes.Buffer
|
||||
PrintTable(&buf, stories)
|
||||
out := buf.String()
|
||||
|
||||
lines := strings.Split(out, "\n")
|
||||
if len(lines) < 2 {
|
||||
t.Fatalf("Expected at least 2 lines of output, got %d", len(lines))
|
||||
}
|
||||
separatorLine := lines[1]
|
||||
parts := strings.Split(separatorLine, " ")
|
||||
if len(parts) < 2 {
|
||||
t.Fatalf("Separator line does not contain expected gutter: %s", separatorLine)
|
||||
}
|
||||
updateDashes := parts[1]
|
||||
if len(updateDashes) < len("Last Update") {
|
||||
t.Errorf("Update column separator too short: %d < 11", len(updateDashes))
|
||||
}
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user