Search Apps Documentation Source Content File Folder Download Copy Actions Download

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}