1package root
2
3import (
4	"testing"
5
6	"github.com/cli/cli/v2/pkg/iostreams"
7	"github.com/stretchr/testify/assert"
8)
9
10func TestNewHelpTopic(t *testing.T) {
11	tests := []struct {
12		name     string
13		topic    string
14		args     []string
15		flags    []string
16		wantsErr bool
17	}{
18		{
19			name:     "valid topic",
20			topic:    "environment",
21			args:     []string{},
22			flags:    []string{},
23			wantsErr: false,
24		},
25		{
26			name:     "invalid topic",
27			topic:    "invalid",
28			args:     []string{},
29			flags:    []string{},
30			wantsErr: false,
31		},
32		{
33			name:     "more than zero args",
34			topic:    "environment",
35			args:     []string{"invalid"},
36			flags:    []string{},
37			wantsErr: false,
38		},
39		{
40			name:     "more than zero flags",
41			topic:    "environment",
42			args:     []string{},
43			flags:    []string{"--invalid"},
44			wantsErr: true,
45		},
46		{
47			name:     "help arg",
48			topic:    "environment",
49			args:     []string{"help"},
50			flags:    []string{},
51			wantsErr: false,
52		},
53		{
54			name:     "help flag",
55			topic:    "environment",
56			args:     []string{},
57			flags:    []string{"--help"},
58			wantsErr: false,
59		},
60	}
61
62	for _, tt := range tests {
63		t.Run(tt.name, func(t *testing.T) {
64			_, _, stdout, stderr := iostreams.Test()
65
66			cmd := NewHelpTopic(tt.topic)
67			cmd.SetArgs(append(tt.args, tt.flags...))
68			cmd.SetOut(stdout)
69			cmd.SetErr(stderr)
70
71			_, err := cmd.ExecuteC()
72			if tt.wantsErr {
73				assert.Error(t, err)
74				return
75			}
76			assert.NoError(t, err)
77		})
78	}
79}
80