...

Source file src/github.com/jedib0t/go-pretty/v6/table/render_markdown_test.go

Documentation: github.com/jedib0t/go-pretty/v6/table

     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  	// ensure sorting is done before hiding the columns
    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