@@ -287,4 +287,135 @@ describe('Example - Grid Menu', () => {
287287 . should ( 'be.visible' )
288288 . click ( { force : true } ) ;
289289 } ) ;
290+
291+ it ( 'should be able to open Grid Menu and click on Export->Text and expect alert triggered with Text Export' , ( ) => {
292+ const subCommands1 = [ 'Text' , 'Excel' ] ;
293+ const stub = cy . stub ( ) ;
294+ cy . on ( 'window:alert' , stub ) ;
295+
296+ cy . get ( '#myGrid' )
297+ . find ( 'button.slick-gridmenu-button' )
298+ . click ( { force : true } ) ;
299+
300+ cy . get ( '.slick-gridmenu.slick-menu-level-0 .slick-gridmenu-command-list' )
301+ . find ( '.slick-gridmenu-item' )
302+ . contains ( 'Export' )
303+ . click ( ) ;
304+
305+ cy . get ( '.slick-gridmenu.slick-menu-level-1 .slick-gridmenu-command-list' )
306+ . should ( 'exist' )
307+ . find ( '.slick-gridmenu-item' )
308+ . each ( ( $command , index ) => expect ( $command . text ( ) ) . to . contain ( subCommands1 [ index ] ) ) ;
309+
310+ cy . get ( '.slick-gridmenu.slick-menu-level-1 .slick-gridmenu-command-list' )
311+ . find ( '.slick-gridmenu-item' )
312+ . contains ( 'Text' )
313+ . click ( )
314+ . then ( ( ) => expect ( stub . getCall ( 0 ) ) . to . be . calledWith ( 'Exporting as Text' ) ) ;
315+ } ) ;
316+
317+ it ( 'should be able to open Grid Menu and click on Export->Excel->xls and expect alert triggered with Excel (xls) Export' , ( ) => {
318+ const subCommands1 = [ 'Text' , 'Excel' ] ;
319+ const subCommands2 = [ 'Excel (csv)' , 'Excel (xls)' ] ;
320+ const stub = cy . stub ( ) ;
321+ cy . on ( 'window:alert' , stub ) ;
322+
323+ cy . get ( '#myGrid' )
324+ . find ( 'button.slick-gridmenu-button' )
325+ . click ( { force : true } ) ;
326+
327+ cy . get ( '.slick-gridmenu.slick-menu-level-0 .slick-gridmenu-command-list' )
328+ . find ( '.slick-gridmenu-item' )
329+ . contains ( 'Export' )
330+ . click ( ) ;
331+
332+ cy . get ( '.slick-gridmenu.slick-menu-level-1 .slick-gridmenu-command-list' )
333+ . should ( 'exist' )
334+ . find ( '.slick-gridmenu-item' )
335+ . each ( ( $command , index ) => expect ( $command . text ( ) ) . to . contain ( subCommands1 [ index ] ) ) ;
336+
337+ cy . get ( '.slick-submenu' ) . should ( 'have.length' , 1 ) ;
338+ cy . get ( '.slick-gridmenu.slick-menu-level-1 .slick-gridmenu-command-list' )
339+ . find ( '.slick-gridmenu-item' )
340+ . contains ( 'Excel' )
341+ . click ( ) ;
342+
343+ cy . get ( '.slick-gridmenu.slick-menu-level-2 .slick-gridmenu-command-list' ) . as ( 'subMenuList2' ) ;
344+
345+ cy . get ( '@subMenuList2' )
346+ . find ( '.slick-menu-title' )
347+ . contains ( 'available formats' ) ;
348+
349+ cy . get ( '@subMenuList2' )
350+ . should ( 'exist' )
351+ . find ( '.slick-gridmenu-item' )
352+ . each ( ( $command , index ) => expect ( $command . text ( ) ) . to . contain ( subCommands2 [ index ] ) ) ;
353+ cy . get ( '.slick-submenu' ) . should ( 'have.length' , 2 ) ;
354+
355+ cy . get ( '.slick-gridmenu.slick-menu-level-2 .slick-gridmenu-command-list' )
356+ . find ( '.slick-gridmenu-item' )
357+ . contains ( 'Excel (xls)' )
358+ . click ( )
359+ . then ( ( ) => expect ( stub . getCall ( 0 ) ) . to . be . calledWith ( 'Exporting as Excel (xls)' ) ) ;
360+ cy . get ( '.slick-submenu' ) . should ( 'have.length' , 0 ) ;
361+ } ) ;
362+
363+ it ( 'should open Export->Excel context sub-menu then open Feedback->ContactUs sub-menus and expect previous Export menu to no longer exists' , ( ) => {
364+ const subCommands1 = [ 'Text' , 'Excel' ] ;
365+ const subCommands2 = [ 'Request update from shipping team' , '' , 'Contact Us' ] ;
366+ const subCommands2_1 = [ 'Email us' , 'Chat with us' , 'Book an appointment' ] ;
367+
368+ const stub = cy . stub ( ) ;
369+ cy . on ( 'window:alert' , stub ) ;
370+
371+ cy . get ( '#myGrid' )
372+ . find ( 'button.slick-gridmenu-button' )
373+ . click ( { force : true } ) ;
374+
375+ cy . get ( '.slick-gridmenu.slick-menu-level-0 .slick-gridmenu-command-list' )
376+ . find ( '.slick-gridmenu-item' )
377+ . contains ( 'Export' )
378+ . click ( ) ;
379+
380+ cy . get ( '.slick-gridmenu.slick-menu-level-1 .slick-gridmenu-command-list' )
381+ . should ( 'exist' )
382+ . find ( '.slick-gridmenu-item' )
383+ . each ( ( $command , index ) => expect ( $command . text ( ) ) . to . contain ( subCommands1 [ index ] ) ) ;
384+
385+ // click different sub-menu
386+ cy . get ( '.slick-gridmenu.slick-menu-level-0' )
387+ . find ( '.slick-gridmenu-item' )
388+ . contains ( 'Feedback' )
389+ . should ( 'exist' )
390+ . click ( ) ;
391+
392+ cy . get ( '.slick-submenu' ) . should ( 'have.length' , 1 ) ;
393+ cy . get ( '.slick-gridmenu.slick-menu-level-1' )
394+ . should ( 'exist' )
395+ . find ( '.slick-gridmenu-item' )
396+ . each ( ( $command , index ) => expect ( $command . text ( ) ) . to . contain ( subCommands2 [ index ] ) ) ;
397+
398+ // click on Feedback->ContactUs
399+ cy . get ( '.slick-gridmenu.slick-menu-level-1.dropleft' ) // left align
400+ . find ( '.slick-gridmenu-item' )
401+ . contains ( 'Contact Us' )
402+ . should ( 'exist' )
403+ . click ( ) ;
404+
405+ cy . get ( '.slick-submenu' ) . should ( 'have.length' , 2 ) ;
406+ cy . get ( '.slick-gridmenu.slick-menu-level-2.dropright' ) // right align
407+ . should ( 'exist' )
408+ . find ( '.slick-gridmenu-item' )
409+ . each ( ( $command , index ) => expect ( $command . text ( ) ) . to . eq ( subCommands2_1 [ index ] ) ) ;
410+
411+ cy . get ( '.slick-gridmenu.slick-menu-level-2' ) ;
412+
413+ cy . get ( '.slick-gridmenu.slick-menu-level-2 .slick-gridmenu-command-list' )
414+ . find ( '.slick-gridmenu-item' )
415+ . contains ( 'Chat with us' )
416+ . click ( )
417+ . then ( ( ) => expect ( stub . getCall ( 0 ) ) . to . be . calledWith ( 'Command: contact-chat' ) ) ;
418+
419+ cy . get ( '.slick-submenu' ) . should ( 'have.length' , 0 ) ;
420+ } ) ;
290421} ) ;
0 commit comments