Breite im Terminal begrenzen

This commit is contained in:
2026-07-12 12:25:51 +02:00
parent 8b23f8b116
commit a1504dd5e6
4 changed files with 133 additions and 5 deletions

View 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))
}
})
}