@@ -351,4 +351,119 @@ describe('CommandPaletteView', () => {
351351 } )
352352 } )
353353 } )
354+
355+ describe ( '`command-palette:copy-display-name` and `command-palette:copy-command-name`' , ( ) => {
356+ beforeEach ( ( ) => {
357+ atom . commands . add ( '*' , {
358+ 'test-xxxxx-command:command-one' : ( ) => { } ,
359+ 'test-xxxxx-command:command-two' : ( ) => { } ,
360+ 'test-xxxxx-command:command-three' : ( ) => { } ,
361+ 'test-xxxxx-command:command-four' : ( ) => { } ,
362+ 'test-xxxxx-command:command-five' : ( ) => { } ,
363+ } )
364+ } )
365+
366+ it ( '[by keyboard shortcut] copy name for selected item' , async ( ) => {
367+ const spy = sandbox . spy ( atom . clipboard , 'write' )
368+
369+ const commandPalette = new CommandPaletteView ( )
370+ const selectListView = commandPalette . selectListView
371+ await commandPalette . toggle ( )
372+
373+ selectListView . selectItem ( selectListView . items . find ( item => item . name === "test-xxxxx-command:command-one" ) )
374+ atom . commands . dispatch ( selectListView . element , 'command-palette:copy-display-name' )
375+ assert ( spy . calledWith ( "`Test Xxxxx Command: Command One`" ) )
376+ atom . commands . dispatch ( selectListView . element , 'command-palette:copy-command-name' )
377+ assert ( spy . calledWith ( "`test-xxxxx-command:command-one`" ) )
378+
379+ spy . reset ( )
380+ selectListView . selectItem ( selectListView . items . find ( item => item . name === "test-xxxxx-command:command-two" ) )
381+ atom . commands . dispatch ( selectListView . element , 'command-palette:copy-display-name' )
382+ assert ( spy . calledWith ( "`Test Xxxxx Command: Command Two`" ) )
383+ atom . commands . dispatch ( selectListView . element , 'command-palette:copy-command-name' )
384+ assert ( spy . calledWith ( "`test-xxxxx-command:command-two`" ) )
385+ } )
386+
387+ it ( '[by context menu] copy name for selected item' , async ( ) => {
388+ const spy = sandbox . spy ( atom . clipboard , 'write' )
389+
390+ const commandPalette = new CommandPaletteView ( )
391+ const selectListView = commandPalette . selectListView
392+ await commandPalette . toggle ( )
393+
394+ selectListView . refs . queryEditor . setText ( 'xxxxx' )
395+ await selectListView . update ( )
396+ const elements = Array . from ( selectListView . refs . items . children )
397+ assert . equal ( elements . length , 5 )
398+
399+ const elementOne = selectListView . element . querySelector ( "[data-event-name='test-xxxxx-command:command-one']" )
400+ atom . commands . dispatch ( elementOne , 'command-palette:copy-display-name-from-context-menu' )
401+ assert ( spy . calledWith ( "`Test Xxxxx Command: Command One`" ) )
402+ atom . commands . dispatch ( elementOne , 'command-palette:copy-command-name-from-context-menu' )
403+ assert ( spy . calledWith ( "`test-xxxxx-command:command-one`" ) )
404+
405+ spy . reset ( )
406+ const elementTwo = selectListView . element . querySelector ( "[data-event-name='test-xxxxx-command:command-two']" )
407+ atom . commands . dispatch ( elementTwo , 'command-palette:copy-display-name-from-context-menu' )
408+ assert ( spy . calledWith ( "`Test Xxxxx Command: Command Two`" ) )
409+ atom . commands . dispatch ( elementTwo , 'command-palette:copy-command-name-from-context-menu' )
410+ assert ( spy . calledWith ( "`test-xxxxx-command:command-two`" ) )
411+
412+ spy . reset ( )
413+ const elementThree = selectListView . element . querySelector ( "[data-event-name='test-xxxxx-command:command-three']" )
414+ atom . commands . dispatch ( elementThree , 'command-palette:copy-display-name-from-context-menu' )
415+ assert ( spy . calledWith ( "`Test Xxxxx Command: Command Three`" ) )
416+ atom . commands . dispatch ( elementThree , 'command-palette:copy-command-name-from-context-menu' )
417+ assert ( spy . calledWith ( "`test-xxxxx-command:command-three`" ) )
418+
419+ spy . reset ( )
420+ const elementFour = selectListView . element . querySelector ( "[data-event-name='test-xxxxx-command:command-four']" )
421+ atom . commands . dispatch ( elementFour , 'command-palette:copy-display-name-from-context-menu' )
422+ assert ( spy . calledWith ( "`Test Xxxxx Command: Command Four`" ) )
423+ atom . commands . dispatch ( elementFour , 'command-palette:copy-command-name-from-context-menu' )
424+ assert ( spy . calledWith ( "`test-xxxxx-command:command-four`" ) )
425+
426+ spy . reset ( )
427+ const elementFive = selectListView . element . querySelector ( "[data-event-name='test-xxxxx-command:command-five']" )
428+ atom . commands . dispatch ( elementFive , 'command-palette:copy-display-name-from-context-menu' )
429+ assert ( spy . calledWith ( "`Test Xxxxx Command: Command Five`" ) )
430+ atom . commands . dispatch ( elementFive , 'command-palette:copy-command-name-from-context-menu' )
431+ assert ( spy . calledWith ( "`test-xxxxx-command:command-five`" ) )
432+ } )
433+
434+ describe ( 'core:copy behavior with command-palette.copySelectedItemTextWhenEmptySelection setting' , ( ) => {
435+ let spy , selectListView
436+ beforeEach ( async ( ) => {
437+ spy = sandbox . spy ( atom . clipboard , 'write' )
438+
439+ const commandPalette = new CommandPaletteView ( )
440+ selectListView = commandPalette . selectListView
441+ await commandPalette . toggle ( )
442+
443+ selectListView . refs . queryEditor . setText ( 'xxxxx' )
444+ await selectListView . update ( )
445+ assert . equal ( selectListView . getSelectedItem ( ) . name , 'test-xxxxx-command:command-one' )
446+ const elements = Array . from ( selectListView . refs . items . children )
447+ assert . equal ( elements . length , 5 )
448+ } )
449+
450+ it ( '[value = "none"]: copy line text' , async ( ) => {
451+ atom . config . set ( "command-palette.copySelectedItemTextWhenEmptySelection" , "none" )
452+ atom . commands . dispatch ( selectListView . refs . queryEditor . element , 'core:copy' )
453+ assert ( spy . calledWith ( "xxxxx" ) ) // default behavoir of atom-text-editor
454+ } )
455+
456+ it ( '[value = "display-name"]: copy displayName of selected item' , async ( ) => {
457+ atom . config . set ( "command-palette.copySelectedItemTextWhenEmptySelection" , "display-name" )
458+ atom . commands . dispatch ( selectListView . refs . queryEditor . element , 'core:copy' )
459+ assert ( spy . calledWith ( "`Test Xxxxx Command: Command One`" ) )
460+ } )
461+
462+ it ( '[value = "command-name]": copy command name of selected item' , async ( ) => {
463+ atom . config . set ( "command-palette.copySelectedItemTextWhenEmptySelection" , "command-name" )
464+ atom . commands . dispatch ( selectListView . refs . queryEditor . element , 'core:copy' )
465+ assert ( spy . calledWith ( "`test-xxxxx-command:command-one`" ) )
466+ } )
467+ } )
468+ } )
354469} )
0 commit comments