@@ -19,6 +19,7 @@ suite("new-middleware command", () => {
19
19
showErrorMessage : sinon . stub ( ) ,
20
20
showOpenDialog : sinon . stub ( ) ,
21
21
withProgress : sinon . stub ( ) ,
22
+ showInputBox : sinon . stub ( ) ,
22
23
} ,
23
24
} ;
24
25
childProcessStub = {
@@ -67,8 +68,10 @@ suite("new-middleware command", () => {
67
68
68
69
test ( "is not shown when Uri is undefined but resolves a path from workspace" , async ( ) => {
69
70
utilsStub . resolveDartFrogProjectPathFromWorkspace . returns (
70
- validUri . fsPath
71
+ "/home/dart_frog/routes"
71
72
) ;
73
+ utilsStub . nearestDartFrogProject . returns ( "/home/dart_frog/" ) ;
74
+ utilsStub . normalizeRoutePath . returns ( "/" ) ;
72
75
73
76
await command . newMiddleware ( ) ;
74
77
@@ -133,6 +136,75 @@ suite("new-middleware command", () => {
133
136
}
134
137
) ;
135
138
139
+ suite ( "prompts for route path" , ( ) => {
140
+ test ( "is shown when Uri is undefined and selected file is valid" , async ( ) => {
141
+ vscodeStub . window . showInputBox . returns ( "animals/frog" ) ;
142
+ utilsStub . resolveDartFrogProjectPathFromWorkspace . returns (
143
+ "home/routes/animals/frog"
144
+ ) ;
145
+ utilsStub . nearestDartFrogProject . returns ( "home/routes/animals/frog" ) ;
146
+ utilsStub . normalizeRoutePath . returns ( "/animals/frog" ) ;
147
+
148
+ await command . newMiddleware ( ) ;
149
+
150
+ sinon . assert . calledWith ( vscodeStub . window . showInputBox , {
151
+ prompt : "Middleware's route path" ,
152
+ value : "/animals/frog" ,
153
+ placeHolder : "_middleware" ,
154
+ } ) ;
155
+ } ) ;
156
+
157
+ test ( "is not shown when Uri is defined and selected file is valid" , async ( ) => {
158
+ utilsStub . nearestDartFrogProject . returns ( "home/routes/animals/frog" ) ;
159
+ utilsStub . normalizeRoutePath . returns ( "/animals/frog" ) ;
160
+
161
+ await command . newMiddleware ( validUri ) ;
162
+
163
+ sinon . assert . neverCalledWith ( vscodeStub . window . showInputBox , {
164
+ prompt : "Middleware's route path" ,
165
+ value : "/animals/frog/" ,
166
+ placeHolder : "_middleware" ,
167
+ } ) ;
168
+ } ) ;
169
+ } ) ;
170
+
171
+ suite ( "invalid route path error message" , ( ) => {
172
+ const errorMessage = "Please enter a valid route path" ;
173
+
174
+ beforeEach ( ( ) => {
175
+ vscodeStub . window . showInputBox . returns ( "animals/frog" ) ;
176
+ utilsStub . resolveDartFrogProjectPathFromWorkspace . returns (
177
+ "home/routes/animals/frog"
178
+ ) ;
179
+ utilsStub . nearestDartFrogProject . returns ( "home/routes/animals/frog" ) ;
180
+ utilsStub . normalizeRoutePath . returns ( "/animals/frog" ) ;
181
+ } ) ;
182
+
183
+ test ( "is shown when prompt is empty" , async ( ) => {
184
+ vscodeStub . window . showInputBox . returns ( "" ) ;
185
+
186
+ await command . newMiddleware ( ) ;
187
+
188
+ sinon . assert . calledWith ( vscodeStub . window . showErrorMessage , errorMessage ) ;
189
+ } ) ;
190
+
191
+ test ( "is shown when prompt is white spaced" , async ( ) => {
192
+ vscodeStub . window . showInputBox . returns ( " " ) ;
193
+
194
+ await command . newMiddleware ( ) ;
195
+
196
+ sinon . assert . calledWith ( vscodeStub . window . showErrorMessage , errorMessage ) ;
197
+ } ) ;
198
+
199
+ test ( "is shown when prompt is undefined" , async ( ) => {
200
+ vscodeStub . window . showInputBox . returns ( undefined ) ;
201
+
202
+ await command . newMiddleware ( ) ;
203
+
204
+ sinon . assert . calledWith ( vscodeStub . window . showErrorMessage , errorMessage ) ;
205
+ } ) ;
206
+ } ) ;
207
+
136
208
test ( "shows progess on middleware creation" , async ( ) => {
137
209
const routePath = "food/pizza" ;
138
210
const selectedUri = {
@@ -220,6 +292,25 @@ suite("new-middleware command", () => {
220
292
`dart_frog new middleware 'food/italian'`
221
293
) ;
222
294
} ) ;
295
+
296
+ test ( "successfully with prompt route path" , async ( ) => {
297
+ utilsStub . resolveDartFrogProjectPathFromWorkspace . returns (
298
+ "home/routes/animals/frog"
299
+ ) ;
300
+ utilsStub . nearestDartFrogProject . returns ( "home/routes/animals/frog" ) ;
301
+ utilsStub . normalizeRoutePath . returns ( "/animals/frog" ) ;
302
+ vscodeStub . window . showInputBox . returns ( "animals/lion" ) ;
303
+
304
+ await command . newMiddleware ( ) ;
305
+ const progressFunction =
306
+ vscodeStub . window . withProgress . getCall ( 0 ) . args [ 1 ] ;
307
+ await progressFunction ( ) ;
308
+
309
+ sinon . assert . calledWith (
310
+ childProcessStub . exec ,
311
+ `dart_frog new middleware 'animals/lion'`
312
+ ) ;
313
+ } ) ;
223
314
} ) ;
224
315
225
316
test ( "shows error message when `dart_frog new middleware` fails" , async ( ) => {
0 commit comments