@@ -304,6 +304,241 @@ describe('FileUpload Adapter', () => {
304304 ) ;
305305 expect ( serverCommandCalls . length ) . toBe ( 0 ) ;
306306 } ) ;
307+
308+ it ( 'should prompt Enable Streaming Responses after server command when response-mode omitted for OTHER preset' ,
309+ async ( ) => {
310+ ( cliux . inquire as jest . Mock ) . mockResolvedValueOnce ( 'test-project' ) ;
311+ ( cliux . inquire as jest . Mock ) . mockResolvedValueOnce ( 'Default' ) ;
312+ ( cliux . inquire as jest . Mock ) . mockResolvedValueOnce ( 'npm run build' ) ;
313+ ( cliux . inquire as jest . Mock ) . mockResolvedValueOnce ( './dist' ) ;
314+ ( cliux . inquire as jest . Mock ) . mockResolvedValueOnce ( 'npm start' ) ;
315+ ( cliux . inquire as jest . Mock ) . mockResolvedValueOnce ( true ) ;
316+
317+ const createSignedUploadUrlMock = jest
318+ . spyOn ( FileUpload . prototype as any , 'createSignedUploadUrl' )
319+ . mockResolvedValue ( { uploadUid : 'test-upload-uid' } ) ;
320+ const archiveMock = jest
321+ . spyOn ( FileUpload . prototype as any , 'archive' )
322+ . mockResolvedValue ( { zipName : 'test.zip' , zipPath : '/path/to/test.zip' , projectName : 'test-project' } ) ;
323+ const uploadFileMock = jest
324+ . spyOn ( FileUpload . prototype as any , 'uploadFile' )
325+ . mockResolvedValue ( undefined ) ;
326+
327+ const fileUploadInstance = new FileUpload ( {
328+ config : {
329+ flags : {
330+ 'server-command' : undefined ,
331+ 'response-mode' : undefined ,
332+ } ,
333+ framework : 'OTHER' ,
334+ supportedFrameworksForServerCommands : [ 'ANGULAR' , 'OTHER' , 'REMIX' , 'NUXT' ] ,
335+ outputDirectories : { OTHER : './dist' } ,
336+ } ,
337+ log : logMock ,
338+ exit : exitMock ,
339+ } as any ) ;
340+
341+ await fileUploadInstance . prepareAndUploadNewProjectFile ( ) ;
342+
343+ expect ( cliux . inquire ) . toHaveBeenCalledWith ( {
344+ type : 'confirm' ,
345+ name : 'enableStreamingResponse' ,
346+ message : 'Enable Streaming Responses' ,
347+ default : false ,
348+ } ) ;
349+ expect ( fileUploadInstance . config . isStreamingEnabled ) . toBe ( true ) ;
350+
351+ createSignedUploadUrlMock . mockRestore ( ) ;
352+ archiveMock . mockRestore ( ) ;
353+ uploadFileMock . mockRestore ( ) ;
354+ } ) ;
355+
356+ it ( 'should not prompt Enable Streaming Response when response-mode flag is streaming' , async ( ) => {
357+ ( cliux . inquire as jest . Mock ) . mockResolvedValueOnce ( 'test-project' ) ;
358+ ( cliux . inquire as jest . Mock ) . mockResolvedValueOnce ( 'Default' ) ;
359+ ( cliux . inquire as jest . Mock ) . mockResolvedValueOnce ( 'npm run build' ) ;
360+ ( cliux . inquire as jest . Mock ) . mockResolvedValueOnce ( './dist' ) ;
361+
362+ const createSignedUploadUrlMock = jest
363+ . spyOn ( FileUpload . prototype as any , 'createSignedUploadUrl' )
364+ . mockResolvedValue ( { uploadUid : 'test-upload-uid' } ) ;
365+ const archiveMock = jest
366+ . spyOn ( FileUpload . prototype as any , 'archive' )
367+ . mockResolvedValue ( { zipName : 'test.zip' , zipPath : '/path/to/test.zip' , projectName : 'test-project' } ) ;
368+ const uploadFileMock = jest
369+ . spyOn ( FileUpload . prototype as any , 'uploadFile' )
370+ . mockResolvedValue ( undefined ) ;
371+
372+ const fileUploadInstance = new FileUpload ( {
373+ config : {
374+ flags : {
375+ 'server-command' : 'npm start' ,
376+ 'response-mode' : 'streaming' ,
377+ } ,
378+ framework : 'OTHER' ,
379+ supportedFrameworksForServerCommands : [ 'ANGULAR' , 'OTHER' , 'REMIX' , 'NUXT' ] ,
380+ outputDirectories : { OTHER : './dist' } ,
381+ } ,
382+ log : logMock ,
383+ exit : exitMock ,
384+ } as any ) ;
385+
386+ await fileUploadInstance . prepareAndUploadNewProjectFile ( ) ;
387+
388+ const enableStreamingCalls = ( cliux . inquire as jest . Mock ) . mock . calls . filter (
389+ ( call ) => call [ 0 ] ?. name === 'enableStreamingResponse' ,
390+ ) ;
391+ expect ( enableStreamingCalls . length ) . toBe ( 0 ) ;
392+ expect ( fileUploadInstance . config . isStreamingEnabled ) . toBe ( true ) ;
393+
394+ createSignedUploadUrlMock . mockRestore ( ) ;
395+ archiveMock . mockRestore ( ) ;
396+ uploadFileMock . mockRestore ( ) ;
397+ } ) ;
398+
399+ it ( 'should not prompt Enable Streaming Response when response-mode flag is buffered' , async ( ) => {
400+ ( cliux . inquire as jest . Mock ) . mockResolvedValueOnce ( 'test-project' ) ;
401+ ( cliux . inquire as jest . Mock ) . mockResolvedValueOnce ( 'Default' ) ;
402+ ( cliux . inquire as jest . Mock ) . mockResolvedValueOnce ( 'npm run build' ) ;
403+ ( cliux . inquire as jest . Mock ) . mockResolvedValueOnce ( './dist' ) ;
404+
405+ const createSignedUploadUrlMock = jest
406+ . spyOn ( FileUpload . prototype as any , 'createSignedUploadUrl' )
407+ . mockResolvedValue ( { uploadUid : 'test-upload-uid' } ) ;
408+ const archiveMock = jest
409+ . spyOn ( FileUpload . prototype as any , 'archive' )
410+ . mockResolvedValue ( { zipName : 'test.zip' , zipPath : '/path/to/test.zip' , projectName : 'test-project' } ) ;
411+ const uploadFileMock = jest
412+ . spyOn ( FileUpload . prototype as any , 'uploadFile' )
413+ . mockResolvedValue ( undefined ) ;
414+
415+ const fileUploadInstance = new FileUpload ( {
416+ config : {
417+ flags : {
418+ 'server-command' : 'npm start' ,
419+ 'response-mode' : 'buffered' ,
420+ } ,
421+ framework : 'OTHER' ,
422+ supportedFrameworksForServerCommands : [ 'ANGULAR' , 'OTHER' , 'REMIX' , 'NUXT' ] ,
423+ outputDirectories : { OTHER : './dist' } ,
424+ } ,
425+ log : logMock ,
426+ exit : exitMock ,
427+ } as any ) ;
428+
429+ await fileUploadInstance . prepareAndUploadNewProjectFile ( ) ;
430+
431+ const enableStreamingCalls = ( cliux . inquire as jest . Mock ) . mock . calls . filter (
432+ ( call ) => call [ 0 ] ?. name === 'enableStreamingResponse' ,
433+ ) ;
434+ expect ( enableStreamingCalls . length ) . toBe ( 0 ) ;
435+ expect ( fileUploadInstance . config . isStreamingEnabled ) . toBe ( false ) ;
436+
437+ createSignedUploadUrlMock . mockRestore ( ) ;
438+ archiveMock . mockRestore ( ) ;
439+ uploadFileMock . mockRestore ( ) ;
440+ } ) ;
441+
442+ it ( 'should prompt Enable Streaming Responses for Gatsby when flag is not provided' , async ( ) => {
443+ ( cliux . inquire as jest . Mock ) . mockResolvedValueOnce ( 'test-project' ) ;
444+ ( cliux . inquire as jest . Mock ) . mockResolvedValueOnce ( 'Default' ) ;
445+ ( cliux . inquire as jest . Mock ) . mockResolvedValueOnce ( 'npm run build' ) ;
446+ ( cliux . inquire as jest . Mock ) . mockResolvedValueOnce ( './public' ) ;
447+ ( cliux . inquire as jest . Mock ) . mockResolvedValueOnce ( true ) ;
448+
449+ const createSignedUploadUrlMock = jest
450+ . spyOn ( FileUpload . prototype as any , 'createSignedUploadUrl' )
451+ . mockResolvedValue ( { uploadUid : 'test-upload-uid' } ) ;
452+ const archiveMock = jest
453+ . spyOn ( FileUpload . prototype as any , 'archive' )
454+ . mockResolvedValue ( { zipName : 'test.zip' , zipPath : '/path/to/test.zip' , projectName : 'test-project' } ) ;
455+ const uploadFileMock = jest
456+ . spyOn ( FileUpload . prototype as any , 'uploadFile' )
457+ . mockResolvedValue ( undefined ) ;
458+
459+ const fileUploadInstance = new FileUpload ( {
460+ config : {
461+ flags : {
462+ 'response-mode' : undefined ,
463+ } ,
464+ framework : 'GATSBY' ,
465+ supportedFrameworksForServerCommands : [ 'ANGULAR' , 'OTHER' , 'REMIX' , 'NUXT' ] ,
466+ outputDirectories : { GATSBY : './public' } ,
467+ } ,
468+ log : logMock ,
469+ exit : exitMock ,
470+ } as any ) ;
471+
472+ const handleEnvImportFlowMock = jest
473+ . spyOn ( fileUploadInstance , 'handleEnvImportFlow' as any )
474+ . mockResolvedValue ( undefined ) ;
475+
476+ await fileUploadInstance . prepareAndUploadNewProjectFile ( ) ;
477+
478+ const serverCommandCalls = ( cliux . inquire as jest . Mock ) . mock . calls . filter (
479+ ( call ) => call [ 0 ] ?. name === 'serverCommand' ,
480+ ) ;
481+ expect ( serverCommandCalls . length ) . toBe ( 0 ) ;
482+ expect ( cliux . inquire ) . toHaveBeenCalledWith ( {
483+ type : 'confirm' ,
484+ name : 'enableStreamingResponse' ,
485+ message : 'Enable Streaming Responses' ,
486+ default : false ,
487+ } ) ;
488+ expect ( fileUploadInstance . config . isStreamingEnabled ) . toBe ( true ) ;
489+
490+ createSignedUploadUrlMock . mockRestore ( ) ;
491+ archiveMock . mockRestore ( ) ;
492+ uploadFileMock . mockRestore ( ) ;
493+ handleEnvImportFlowMock . mockRestore ( ) ;
494+ } ) ;
495+
496+ it ( 'should apply response-mode flag for Gatsby without prompt' , async ( ) => {
497+ ( cliux . inquire as jest . Mock ) . mockResolvedValueOnce ( 'test-project' ) ;
498+ ( cliux . inquire as jest . Mock ) . mockResolvedValueOnce ( 'Default' ) ;
499+ ( cliux . inquire as jest . Mock ) . mockResolvedValueOnce ( 'npm run build' ) ;
500+ ( cliux . inquire as jest . Mock ) . mockResolvedValueOnce ( './public' ) ;
501+
502+ const createSignedUploadUrlMock = jest
503+ . spyOn ( FileUpload . prototype as any , 'createSignedUploadUrl' )
504+ . mockResolvedValue ( { uploadUid : 'test-upload-uid' } ) ;
505+ const archiveMock = jest
506+ . spyOn ( FileUpload . prototype as any , 'archive' )
507+ . mockResolvedValue ( { zipName : 'test.zip' , zipPath : '/path/to/test.zip' , projectName : 'test-project' } ) ;
508+ const uploadFileMock = jest
509+ . spyOn ( FileUpload . prototype as any , 'uploadFile' )
510+ . mockResolvedValue ( undefined ) ;
511+
512+ const fileUploadInstance = new FileUpload ( {
513+ config : {
514+ flags : {
515+ 'response-mode' : 'buffered' ,
516+ } ,
517+ framework : 'GATSBY' ,
518+ supportedFrameworksForServerCommands : [ 'ANGULAR' , 'OTHER' , 'REMIX' , 'NUXT' ] ,
519+ outputDirectories : { GATSBY : './public' } ,
520+ } ,
521+ log : logMock ,
522+ exit : exitMock ,
523+ } as any ) ;
524+
525+ const handleEnvImportFlowMock = jest
526+ . spyOn ( fileUploadInstance , 'handleEnvImportFlow' as any )
527+ . mockResolvedValue ( undefined ) ;
528+
529+ await fileUploadInstance . prepareAndUploadNewProjectFile ( ) ;
530+
531+ const enableStreamingCalls = ( cliux . inquire as jest . Mock ) . mock . calls . filter (
532+ ( call ) => call [ 0 ] ?. name === 'enableStreamingResponse' ,
533+ ) ;
534+ expect ( enableStreamingCalls . length ) . toBe ( 0 ) ;
535+ expect ( fileUploadInstance . config . isStreamingEnabled ) . toBe ( false ) ;
536+
537+ createSignedUploadUrlMock . mockRestore ( ) ;
538+ archiveMock . mockRestore ( ) ;
539+ uploadFileMock . mockRestore ( ) ;
540+ handleEnvImportFlowMock . mockRestore ( ) ;
541+ } ) ;
307542 } ) ;
308543} ) ;
309544
0 commit comments