...
1 package table
2
3 import (
4 "fmt"
5 "testing"
6
7 "github.com/stretchr/testify/assert"
8 )
9
10 func TestTable_RenderMarkdown(t *testing.T) {
11 tw := NewWriter()
12 tw.AppendHeader(testHeader)
13 tw.AppendRows(testRows)
14 tw.AppendRow(testRowNewLines)
15 tw.AppendRow(testRowPipes)
16 tw.AppendFooter(testFooter)
17 tw.SetCaption(testCaption)
18 tw.SetTitle(testTitle1)
19
20 compareOutput(t, tw.RenderMarkdown(), `# Game of Thrones
21 | # | First Name | Last Name | Salary | |
22 | ---:| --- | --- | ---:| --- |
23 | 1 | Arya | Stark | 3000 | |
24 | 20 | Jon | Snow | 2000 | You know nothing, Jon Snow! |
25 | 300 | Tyrion | Lannister | 5000 | |
26 | 0 | Valar | Morghulis | 0 | Faceless<br/>Men |
27 | 0 | Valar | Morghulis | 0 | Faceless\|Men |
28 | | | Total | 10000 | |
29 _A Song of Ice and Fire_`)
30 }
31
32 func TestTable_RenderMarkdown_AutoIndex(t *testing.T) {
33 tw := NewWriter()
34 for rowIdx := 0; rowIdx < 10; rowIdx++ {
35 row := make(Row, 10)
36 for colIdx := 0; colIdx < 10; colIdx++ {
37 row[colIdx] = fmt.Sprintf("%s%d", AutoIndexColumnID(colIdx), rowIdx+1)
38 }
39 tw.AppendRow(row)
40 }
41 for rowIdx := 0; rowIdx < 1; rowIdx++ {
42 row := make(Row, 10)
43 for colIdx := 0; colIdx < 10; colIdx++ {
44 row[colIdx] = AutoIndexColumnID(colIdx) + "F"
45 }
46 tw.AppendFooter(row)
47 }
48 tw.SetAutoIndex(true)
49 tw.SetStyle(StyleLight)
50
51 compareOutput(t, tw.RenderMarkdown(), `| | A | B | C | D | E | F | G | H | I | J |
52 | ---:| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
53 | 1 | A1 | B1 | C1 | D1 | E1 | F1 | G1 | H1 | I1 | J1 |
54 | 2 | A2 | B2 | C2 | D2 | E2 | F2 | G2 | H2 | I2 | J2 |
55 | 3 | A3 | B3 | C3 | D3 | E3 | F3 | G3 | H3 | I3 | J3 |
56 | 4 | A4 | B4 | C4 | D4 | E4 | F4 | G4 | H4 | I4 | J4 |
57 | 5 | A5 | B5 | C5 | D5 | E5 | F5 | G5 | H5 | I5 | J5 |
58 | 6 | A6 | B6 | C6 | D6 | E6 | F6 | G6 | H6 | I6 | J6 |
59 | 7 | A7 | B7 | C7 | D7 | E7 | F7 | G7 | H7 | I7 | J7 |
60 | 8 | A8 | B8 | C8 | D8 | E8 | F8 | G8 | H8 | I8 | J8 |
61 | 9 | A9 | B9 | C9 | D9 | E9 | F9 | G9 | H9 | I9 | J9 |
62 | 10 | A10 | B10 | C10 | D10 | E10 | F10 | G10 | H10 | I10 | J10 |
63 | | AF | BF | CF | DF | EF | FF | GF | HF | IF | JF |`)
64 }
65
66 func TestTable_RenderMarkdown_Empty(t *testing.T) {
67 tw := NewWriter()
68 assert.Empty(t, tw.RenderMarkdown())
69 }
70
71 func TestTable_RenderMarkdown_HiddenColumns(t *testing.T) {
72 tw := NewWriter()
73 tw.AppendHeader(testHeader)
74 tw.AppendRows(testRows)
75 tw.AppendFooter(testFooter)
76
77
78 tw.SortBy([]SortBy{
79 {Name: "Salary", Mode: DscNumeric},
80 })
81
82 t.Run("every column hidden", func(t *testing.T) {
83 tw.SetColumnConfigs(generateColumnConfigsWithHiddenColumns([]int{0, 1, 2, 3, 4}))
84
85 compareOutput(t, tw.RenderMarkdown(), "")
86 })
87
88 t.Run("first column hidden", func(t *testing.T) {
89 tw.SetColumnConfigs(generateColumnConfigsWithHiddenColumns([]int{0}))
90
91 compareOutput(t, tw.RenderMarkdown(), `| First Name | Last Name | Salary | |
92 | --- | --- | ---:| --- |
93 | >>Tyrion | Lannister<< | 5013 | |
94 | >>Arya | Stark<< | 3013 | |
95 | >>Jon | Snow<< | 2013 | ~You know nothing, Jon Snow!~ |
96 | | Total | 10000 | |`)
97 })
98
99 t.Run("column hidden in the middle", func(t *testing.T) {
100 tw.SetColumnConfigs(generateColumnConfigsWithHiddenColumns([]int{1}))
101
102 compareOutput(t, tw.RenderMarkdown(), `| # | Last Name | Salary | |
103 | ---:| --- | ---:| --- |
104 | 307 | Lannister<< | 5013 | |
105 | 8 | Stark<< | 3013 | |
106 | 27 | Snow<< | 2013 | ~You know nothing, Jon Snow!~ |
107 | | Total | 10000 | |`)
108 })
109
110 t.Run("last column hidden", func(t *testing.T) {
111 tw.SetColumnConfigs(generateColumnConfigsWithHiddenColumns([]int{4}))
112
113 compareOutput(t, tw.RenderMarkdown(), `| # | First Name | Last Name | Salary |
114 | ---:| --- | --- | ---:|
115 | 307 | >>Tyrion | Lannister<< | 5013 |
116 | 8 | >>Arya | Stark<< | 3013 |
117 | 27 | >>Jon | Snow<< | 2013 |
118 | | | Total | 10000 |`)
119 })
120 }
121
122 func TestTable_RendeMarkdown_Sorted(t *testing.T) {
123 tw := NewWriter()
124 tw.AppendHeader(testHeader)
125 tw.AppendRows(testRows)
126 tw.AppendRow(Row{11, "Sansa", "Stark", 6000})
127 tw.AppendFooter(testFooter)
128 tw.SortBy([]SortBy{{Name: "Last Name", Mode: Asc}, {Name: "First Name", Mode: Asc}})
129
130 compareOutput(t, tw.RenderMarkdown(), `| # | First Name | Last Name | Salary | |
131 | ---:| --- | --- | ---:| --- |
132 | 300 | Tyrion | Lannister | 5000 | |
133 | 20 | Jon | Snow | 2000 | You know nothing, Jon Snow! |
134 | 1 | Arya | Stark | 3000 | |
135 | 11 | Sansa | Stark | 6000 | |
136 | | | Total | 10000 | |`)
137 }
138
View as plain text