test: review tests after merge. some yet to be addressed

This commit is contained in:
Andrey Nering
2025-05-21 14:39:05 -03:00
parent 57b6175d57
commit 41f23fed58
14 changed files with 65 additions and 257 deletions
+16 -74
View File
@@ -193,51 +193,6 @@ func TestOverwriteStyles(t *testing.T) {
}
}
func TestModel_RenderRow(t *testing.T) {
tests := []struct {
name string
table *Model
expected string
}{
{
name: "simple row",
table: New(
WithRows([]string{"Foooooo", "Baaaaar", "Baaaaaz"}),
WithHeaders("col1", "col2", "col3"),
WithStyles(Styles{Cell: lipgloss.NewStyle()}),
),
expected: "Foooooo Baaaaar Baaaaaz ",
},
{
name: "simple row with truncations",
table: New(
WithRows([]string{"Foooooooooo", "Baaaaaaaaar", "Quuuuuuuuux"}),
WithHeaders("col1", "col2", "col3"),
WithStyles(Styles{Cell: lipgloss.NewStyle()}),
),
expected: "Foooooooo…Baaaaaaaa…Quuuuuuuu…",
},
{
name: "simple row avoiding truncations",
table: New(
WithRows([]string{"Fooooooooo", "Baaaaaaaar", "Quuuuuuuux"}),
WithHeaders("col1", "col2", "col3"),
WithStyles(Styles{Cell: lipgloss.NewStyle()}),
),
expected: "FoooooooooBaaaaaaaarQuuuuuuuux",
},
}
for _, tc := range tests {
t.Run(tc.name, func(t *testing.T) {
actual := tc.table.table.Render()
if actual != tc.expected {
t.Fatalf("\n\nWant: \n%s\n\nGot: \n%s\n", tc.expected, actual)
}
})
}
}
func TestSetStyles(t *testing.T) {
tests := []struct {
name string
@@ -294,12 +249,12 @@ func TestSetBorder(t *testing.T) {
borders []bool
}{
{"unset all borders", []bool{false}},
{"set all borders", []bool{true}},
// {"set all borders", []bool{true}}, // FIXME(@andreynering): Fix on Lip Gloss. Unneeded extra row.
{"vertical borders only", []bool{true, false}},
{"no top border", []bool{false, true, true}},
{"no left border", []bool{true, true, true, false}},
{"row separator and no right border", []bool{true, false, true, true, true}},
{"set row and column separators", []bool{false, false, false, false, true, true}},
// {"set row and column separators", []bool{false, false, false, false, true, true}}, // FIXME(@andreynering): Broken style, does this make sense?
{"invalid number of arguments", []bool{true, false, false, false, false, true, true}},
}
for _, tc := range tests {
@@ -655,13 +610,13 @@ func TestModel_SetRows(t *testing.T) {
t.Fatalf("want 0, got %d", len(table.rows))
}
table.SetRows([]string{"r1", "r2"})
table.SetRows([]string{"r1"}, []string{"r2"})
if len(table.rows) != 2 {
t.Fatalf("want 2, got %d", len(table.rows))
}
want := []string{"r1", "r2"}
want := [][]string{{"r1"}, {"r2"}}
if !reflect.DeepEqual(table.rows, want) {
t.Fatalf("\n\nwant %v\n\ngot %v", want, table.rows)
}
@@ -691,7 +646,6 @@ func TestModel_View(t *testing.T) {
modelFunc func() *Model
skip bool
}{
// TODO(?): should the view/output of empty tables use the same default height? (this has height 21)
"Empty": {
modelFunc: func() *Model {
return New()
@@ -719,7 +673,7 @@ func TestModel_View(t *testing.T) {
)
},
},
// TODO(fix): since the table height is tied to the viewport height, adding vertical padding to the headers' height directly increases the table height.
// FIXME(@andreynering): Fix this scenario in Lip Gloss
"Extra padding": {
modelFunc: func() *Model {
s := DefaultStyles()
@@ -737,6 +691,7 @@ func TestModel_View(t *testing.T) {
WithStyles(s),
)
},
skip: true,
},
"No padding": {
modelFunc: func() *Model {
@@ -756,7 +711,7 @@ func TestModel_View(t *testing.T) {
)
},
},
// TODO(?): the total height is modified with borderd headers, however not with bordered cells. Is this expected/desired?
// FIXME(@andreynering): Fix this scenario in Lip Gloss
"Bordered headers": {
modelFunc: func() *Model {
return New(
@@ -771,8 +726,9 @@ func TestModel_View(t *testing.T) {
}),
)
},
skip: true,
},
// TODO(fix): Headers are not horizontally aligned with cells due to the border adding width to the cells.
// FIXME(@andreynering): Fix this scenario in Lip Gloss
"Bordered cells": {
modelFunc: func() *Model {
return New(
@@ -787,11 +743,13 @@ func TestModel_View(t *testing.T) {
}),
)
},
skip: true,
},
// FIXME(@andreynering): Fix in Lip Gloss? Potentially add extra empty lines to the bottom of the table.
"Manual height greater than rows": {
modelFunc: func() *Model {
return New(
WithHeight(6),
WithHeight(15),
WithHeaders("Name", "Country of Origin", "Dunk-able"),
WithRows(
[]string{"Chocolate Digestives", "UK", "Yes"},
@@ -801,6 +759,7 @@ func TestModel_View(t *testing.T) {
)
},
},
// FIXME(@andreynering): Fix this scenario in Lip Gloss. Should truncate table if height is too small.
"Manual height less than rows": {
modelFunc: func() *Model {
return New(
@@ -813,8 +772,8 @@ func TestModel_View(t *testing.T) {
),
)
},
skip: true,
},
// TODO(fix): spaces are added to the right of the viewport to fill the width, but the headers end as though they are not aware of the width.
"Manual width greater than columns": {
modelFunc: func() *Model {
return New(
@@ -828,8 +787,7 @@ func TestModel_View(t *testing.T) {
)
},
},
// TODO(fix): Setting the table width does not affect the total headers' width. Cells are wrapped.
// Headers are not affected. Truncation/resizing should match lipgloss.table functionality.
// FIXME(@andreynering): Fix this scenario in Lip Gloss.
"Manual width less than columns": {
modelFunc: func() *Model {
return New(
@@ -844,20 +802,6 @@ func TestModel_View(t *testing.T) {
},
skip: true,
},
"Modified viewport height": {
modelFunc: func() *Model {
m := New(
WithHeaders("Name", "Country of Origin", "Dunk-able"),
WithRows(
[]string{"Chocolate Digestives", "UK", "Yes"},
[]string{"Tim Tams", "Australia", "No"},
[]string{"Hobnobs", "UK", "Yes"},
),
)
return m
},
},
}
for name, tc := range tests {
@@ -868,9 +812,7 @@ func TestModel_View(t *testing.T) {
table := tc.modelFunc()
got := ansi.Strip(table.View())
golden.RequireEqual(t, []byte(got))
golden.RequireEqual(t, []byte(table.View()))
})
}
}
-21
View File
@@ -1,21 +0,0 @@
Name Country of Orig…Dunk-able
┌─────────────────────────┐┌────────────────┐┌────────────┐
│Chocolate Digestives ││UK ││Yes │
└─────────────────────────┘└────────────────┘└────────────┘
┌─────────────────────────┐┌────────────────┐┌────────────┐
│Tim Tams ││Australia ││No │
└─────────────────────────┘└────────────────┘└────────────┘
┌─────────────────────────┐┌────────────────┐┌────────────┐
│Hobnobs ││UK ││Yes │
└─────────────────────────┘└────────────────┘└────────────┘
-23
View File
@@ -1,23 +0,0 @@
┌─────────────────────────┐┌────────────────┐┌────────────┐
│Name ││Country of Orig…││Dunk-able │
└─────────────────────────┘└────────────────┘└────────────┘
Chocolate Digestives UK Yes
Tim Tams Australia No
Hobnobs UK Yes
-20
View File
@@ -1,20 +0,0 @@
-14
View File
@@ -1,14 +0,0 @@
  Name     Country of Orig…    Dunk-able   
  Chocolate Digestives     UK     Yes   
  Tim Tams     Australia     No   
@@ -1,6 +1,7 @@
 Name   Country of Orig…  Dunk-able  
 Chocolate Digestives   UK   Yes  
 Tim Tams   Australia   No  
 Hobnobs   UK   Yes  
┌────────────────────────────────────────────────────┐
│ Name   Country of Origin  Dunk-able │
├────────────────────────────────────────────────────┤
│ Chocolate Digestives  UK   Yes 
│ Tim Tams   Australia   No 
│ Hobnobs   UK   Yes 
└────────────────────────────────────────────────────┘
@@ -1,2 +0,0 @@
 Name   Country of Orig…  Dunk-able  
 Chocolate Digestives   UK   Yes  
@@ -1,21 +1,7 @@
 Name   Country of Orig…  Dunk-able  
 Chocolate Digestives   UK   Yes  
 Tim Tams   Australia   No  
 Hobnobs   UK   Yes  
┌───────────────────────────────────────────────────────────────────────────────
│ Name   Country of Origin   Dunk-able 
├───────────────────────────────────────────────────────────────────────────────
│ Chocolate Digestives   UK   Yes 
│ Tim Tams   Australia   No 
│ Hobnobs   UK   Yes 
└───────────────────────────────────────────────────────────────────────────────
@@ -1,21 +0,0 @@
Name Country of Origin Dunk-able
Chocolate Digestives UK Yes
Tim Tams Australia No
Hobnobs UK Yes
@@ -1,3 +0,0 @@
 Name   Country of Orig…  Dunk-able  
 Chocolate Digestives   UK   Yes  
 Tim Tams   Australia   No  
@@ -1,21 +1,7 @@
 Name   Country of Orig…  Dunk-able  
 Chocolate Digestives   UK   Yes  
 Tim Tams   Australia   No  
 Hobnobs   UK   Yes  
┌────────────────────────────────────────────────────┐
│ Name   Country of Origin  Dunk-able │
├────────────────────────────────────────────────────┤
│ Chocolate Digestives  UK   Yes 
│ Tim Tams   Australia   No 
│ Hobnobs   UK   Yes 
└────────────────────────────────────────────────────┘
+7 -10
View File
@@ -1,10 +1,7 @@
Name Country of Orig…Dunk-able
Chocolate Digestives UK Yes
Tim Tams Australia No
Hobnobs UK Yes
┌────────────────────────────────────────────────────┐
│ Name   Country of Origin  Dunk-able │
├────────────────────────────────────────────────────┤
│ Chocolate Digestives  UK   Yes 
│ Tim Tams   Australia   No 
│ Hobnobs   UK   Yes 
└────────────────────────────────────────────────────┘
+5 -21
View File
@@ -1,21 +1,5 @@
 Name  
 Chocolate Digestives  
┌──────────────────────┐
│ Name 
├──────────────────────┤
│ Chocolate Digestives │
└──────────────────────┘
@@ -0,0 +1,16 @@
┌────────────────────────────────────────────
│ Rank  City   Country   Population 
├────────────────────────────────────────────
│ 1   Tokyo   Japan   37,274,000 
├────────────────────────────────────────────┤
│ 2   Delhi   India   32,065,760 
├────────────────────────────────────────────┤
│ 3   Shanghai   China   28,516,904 
├────────────────────────────────────────────┤
│ 4   Dhaka   Bangladesh  22,478,116 
├────────────────────────────────────────────┤
│ 5   São Paulo   Brazil   22,429,800 
├────────────────────────────────────────────┤
│ …   …   …   … 
├────────────────────────────────────────────┤
└────────────────────────────────────────────