23
23
package cli
24
24
25
25
import (
26
- "flag"
27
26
"fmt"
28
27
"testing"
29
28
30
29
"github.com/stretchr/testify/assert"
31
- "github.com/urfave/cli/v2"
32
30
"go.uber.org/mock/gomock"
33
31
34
32
"github.com/uber/cadence/client/admin"
35
33
"github.com/uber/cadence/common/types"
34
+ "github.com/uber/cadence/tools/cli/clitest"
36
35
)
37
36
38
37
func TestAdminGetAsyncWFConfig (t * testing.T ) {
@@ -44,7 +43,7 @@ func TestAdminGetAsyncWFConfig(t *testing.T) {
44
43
setupMocks func (* admin.MockClient )
45
44
expectedError string
46
45
expectedStr string
47
- flagDomain string
46
+ cmdline string
48
47
mockDepsError error
49
48
mockContextError error
50
49
}{
@@ -64,15 +63,15 @@ func TestAdminGetAsyncWFConfig(t *testing.T) {
64
63
},
65
64
expectedError : "" ,
66
65
expectedStr : "PredefinedQueueName" ,
67
- flagDomain : " test-domain" ,
66
+ cmdline : "cadence --domain test-domain admin async-wf-queue get " ,
68
67
},
69
68
{
70
69
name : "Required flag not present" ,
71
70
setupMocks : func (client * admin.MockClient ) {
72
71
// No call to the mock admin client is expected
73
72
},
74
73
expectedError : "Required flag not present:" ,
75
- flagDomain : "" ,
74
+ cmdline : "cadence admin async-wf-queue get" , // --domain is missing
76
75
},
77
76
{
78
77
name : "Config not found (resp.Configuration == nil)" ,
@@ -85,7 +84,7 @@ func TestAdminGetAsyncWFConfig(t *testing.T) {
85
84
Times (1 )
86
85
},
87
86
expectedError : "" ,
88
- flagDomain : " test-domain" ,
87
+ cmdline : "cadence --domain test-domain admin async-wf-queue get " ,
89
88
},
90
89
{
91
90
name : "Failed to get async wf config" ,
@@ -96,7 +95,7 @@ func TestAdminGetAsyncWFConfig(t *testing.T) {
96
95
Times (1 )
97
96
},
98
97
expectedError : "Failed to get async wf queue config" ,
99
- flagDomain : " test-domain" ,
98
+ cmdline : "cadence --domain test-domain admin async-wf-queue get " ,
100
99
},
101
100
}
102
101
@@ -114,15 +113,7 @@ func TestAdminGetAsyncWFConfig(t *testing.T) {
114
113
serverAdminClient : adminClient ,
115
114
}, WithIOHandler (ioHandler ))
116
115
117
- // Set up CLI context with flags
118
- set := flag .NewFlagSet ("test" , 0 )
119
- set .String (FlagDomain , tt .flagDomain , "Domain flag" )
120
- c := cli .NewContext (app , set , nil )
121
-
122
- // Call the function under test
123
- err := AdminGetAsyncWFConfig (c )
124
-
125
- // Check the expected outcome
116
+ err := clitest .RunCommandLine (t , app , tt .cmdline )
126
117
if tt .expectedError != "" {
127
118
assert .Error (t , err )
128
119
assert .Contains (t , err .Error (), tt .expectedError )
@@ -143,8 +134,7 @@ func TestAdminUpdateAsyncWFConfig(t *testing.T) {
143
134
name string
144
135
setupMocks func (* admin.MockClient )
145
136
expectedError string
146
- flagDomain string
147
- flagJSON string
137
+ cmdline string
148
138
mockContextError error
149
139
unmarshalError error
150
140
}{
@@ -157,35 +147,31 @@ func TestAdminUpdateAsyncWFConfig(t *testing.T) {
157
147
Times (1 )
158
148
},
159
149
expectedError : "" ,
160
- flagDomain : "test-domain" ,
161
- flagJSON : `{"Enabled": true}` ,
150
+ cmdline : `cadence --domain test-domain admin async-wf-queue update --json '{"Enabled": true}'` ,
162
151
},
163
152
{
164
153
name : "Required flag not present for domain" ,
165
154
setupMocks : func (client * admin.MockClient ) {
166
155
// No call to the mock admin client is expected
167
156
},
168
157
expectedError : "Required flag not present:" ,
169
- flagDomain : "" ,
170
- flagJSON : `{"Enabled": true}` ,
158
+ cmdline : `cadence admin async-wf-queue update --json '{"Enabled": true}'` , // --domain is missing
171
159
},
172
160
{
173
161
name : "Required flag not present for JSON" ,
174
162
setupMocks : func (client * admin.MockClient ) {
175
163
// No call to the mock admin client is expected
176
164
},
177
165
expectedError : "Required flag not present:" ,
178
- flagDomain : "test-domain" ,
179
- flagJSON : "" ,
166
+ cmdline : `cadence --domain test-domain admin async-wf-queue update --json ""` , // empty --json flag
180
167
},
181
168
{
182
169
name : "Failed to parse async workflow config" ,
183
170
setupMocks : func (client * admin.MockClient ) {
184
171
// No call setup for this test case as JSON parsing fails
185
172
},
186
173
expectedError : "Failed to parse async workflow config" ,
187
- flagDomain : "test-domain" ,
188
- flagJSON : `invalid-json` ,
174
+ cmdline : `cadence --domain test-domain admin async-wf-queue update --json invalid-json` ,
189
175
unmarshalError : fmt .Errorf ("unmarshal error" ),
190
176
},
191
177
{
@@ -197,8 +183,7 @@ func TestAdminUpdateAsyncWFConfig(t *testing.T) {
197
183
Times (1 )
198
184
},
199
185
expectedError : "Failed to update async workflow queue config" ,
200
- flagDomain : "test-domain" ,
201
- flagJSON : `{"Enabled": true}` ,
186
+ cmdline : `cadence --domain test-domain admin async-wf-queue update --json '{"Enabled": true}'` ,
202
187
},
203
188
}
204
189
@@ -215,23 +200,13 @@ func TestAdminUpdateAsyncWFConfig(t *testing.T) {
215
200
serverAdminClient : adminClient ,
216
201
})
217
202
218
- // Set up CLI context with flags
219
- set := flag .NewFlagSet ("test" , 0 )
220
- set .String (FlagDomain , tt .flagDomain , "Domain flag" )
221
- set .String (FlagJSON , tt .flagJSON , "JSON flag" )
222
- c := cli .NewContext (app , set , nil )
223
-
224
- // Call the function under test
225
- err := AdminUpdateAsyncWFConfig (c )
226
-
227
- // Check the expected outcome
203
+ err := clitest .RunCommandLine (t , app , tt .cmdline )
228
204
if tt .expectedError != "" {
229
205
assert .Error (t , err )
230
206
assert .Contains (t , err .Error (), tt .expectedError )
231
207
} else {
232
208
assert .NoError (t , err )
233
209
}
234
-
235
210
})
236
211
}
237
212
}
0 commit comments