tablesort_test.gno
1.75 Kb · 65 lines
1package tablesort
2
3import (
4 "net/url"
5 "strings"
6 "testing"
7)
8
9func TestRender(t *testing.T) {
10 // --- Case 1: Testing Render with a Table with "Role" column sorted descending and param prefix "members-"
11 table := &Table{
12 Headings: []string{"Tier", "Member", "Role"},
13 Rows: [][]string{
14 {"T1", "g11111", "finance-officer"},
15 {"T2", "g22222", "developer"},
16 {"T3", "g33333", "developer"},
17 },
18 }
19
20 u, _ := url.Parse("/test?members-sort-desc=Tier")
21 md := Render(u, table, "members-")
22
23 expected := "| [Tier ↓](/test?members-sort-asc=Tier) | [Member](/test?members-sort-desc=Member) | [Role](/test?members-sort-desc=Role) |\n" +
24 "| --- | --- | --- |\n" +
25 "| T3 | g33333 | developer |\n" +
26 "| T2 | g22222 | developer |\n" +
27 "| T1 | g11111 | finance-officer |\n"
28
29 // Trim spaces for comparison
30 md = strings.TrimSpace(md)
31 expected = strings.TrimSpace(expected)
32
33 if md != expected {
34 t.Errorf("Render() output mismatch.\nExpected:\n%s\nGot:\n%s", expected, md)
35 }
36
37 // --- Case 2: Testing Render with an invalid Table (row with missing cell)
38 table = &Table{
39 Headings: []string{"Tier", "Member", "Role"},
40 Rows: [][]string{
41 {"T1", "g11111"}, // Missing the "Role" cell
42 },
43 }
44
45 md = Render(u, table, "")
46 expected = "tablesort fails: row 1 has 2 cells, expected 3, because there are 3 columns.\n"
47
48 if md != expected {
49 t.Errorf("Expected error message:\n%s\nGot:\n%s", expected, md)
50 }
51
52 // --- Case 3: Testing SortRows
53 rows := [][]string{
54 {"T1", "g11111", "finance-officer"},
55 {"T2", "g22222", "developer"},
56 {"T3", "g33333", "developer"},
57 }
58
59 SortRows(rows, 2, false) // Sort by "Role" descending
60 expected = "finance-officer"
61
62 if rows[0][2] != expected {
63 t.Errorf("SortRows() failed. Expected first role: %s, got: %s", expected, rows[0][2])
64 }
65}