github.com/secman-team/gh-api@v1.8.2/pkg/markdown/markdown_test.go (about)

     1  package markdown
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  )
     8  
     9  func Test_Render(t *testing.T) {
    10  	type input struct {
    11  		text  string
    12  		style string
    13  	}
    14  	type output struct {
    15  		wantsErr bool
    16  	}
    17  	tests := []struct {
    18  		name   string
    19  		input  input
    20  		output output
    21  	}{
    22  		{
    23  			name: "invalid glamour style",
    24  			input: input{
    25  				text:  "some text",
    26  				style: "invalid",
    27  			},
    28  			output: output{
    29  				wantsErr: true,
    30  			},
    31  		},
    32  		{
    33  			name: "valid glamour style",
    34  			input: input{
    35  				text:  "some text",
    36  				style: "dark",
    37  			},
    38  			output: output{
    39  				wantsErr: false,
    40  			},
    41  		},
    42  	}
    43  
    44  	for _, tt := range tests {
    45  		t.Run(tt.name, func(t *testing.T) {
    46  			_, err := Render(tt.input.text, tt.input.style)
    47  			if tt.output.wantsErr {
    48  				assert.Error(t, err)
    49  				return
    50  			}
    51  			assert.NoError(t, err)
    52  		})
    53  	}
    54  }
    55  
    56  func Test_GetStyle(t *testing.T) {
    57  	type input struct {
    58  		glamourStyle  string
    59  		terminalTheme string
    60  	}
    61  	type output struct {
    62  		style string
    63  	}
    64  	tests := []struct {
    65  		name   string
    66  		input  input
    67  		output output
    68  	}{
    69  		{
    70  			name: "no glamour style and no terminal theme",
    71  			input: input{
    72  				glamourStyle:  "",
    73  				terminalTheme: "none",
    74  			},
    75  			output: output{
    76  				style: "notty",
    77  			},
    78  		},
    79  		{
    80  			name: "auto glamour style and no terminal theme",
    81  			input: input{
    82  				glamourStyle:  "auto",
    83  				terminalTheme: "none",
    84  			},
    85  			output: output{
    86  				style: "notty",
    87  			},
    88  		},
    89  		{
    90  			name: "user glamour style and no terminal theme",
    91  			input: input{
    92  				glamourStyle:  "somestyle",
    93  				terminalTheme: "none",
    94  			},
    95  			output: output{
    96  				style: "somestyle",
    97  			},
    98  		},
    99  		{
   100  			name: "no glamour style and light terminal theme",
   101  			input: input{
   102  				glamourStyle:  "",
   103  				terminalTheme: "light",
   104  			},
   105  			output: output{
   106  				style: "light",
   107  			},
   108  		},
   109  		{
   110  			name: "no glamour style and dark terminal theme",
   111  			input: input{
   112  				glamourStyle:  "",
   113  				terminalTheme: "dark",
   114  			},
   115  			output: output{
   116  				style: "dark",
   117  			},
   118  		},
   119  		{
   120  			name: "no glamour style and unknown terminal theme",
   121  			input: input{
   122  				glamourStyle:  "",
   123  				terminalTheme: "unknown",
   124  			},
   125  			output: output{
   126  				style: "notty",
   127  			},
   128  		},
   129  	}
   130  
   131  	for _, tt := range tests {
   132  		fromEnv = func() string {
   133  			return tt.input.glamourStyle
   134  		}
   135  
   136  		t.Run(tt.name, func(t *testing.T) {
   137  			style := GetStyle(tt.input.terminalTheme)
   138  			assert.Equal(t, tt.output.style, style)
   139  		})
   140  	}
   141  }