@@ -435,6 +435,37 @@ describe('Menu', () => {
435435 expect ( wrapper . isActive ( 1 ) ) . toBeTruthy ( ) ;
436436 } ) ;
437437
438+ it ( 'input and textarea cursor can be moved by arrow' , ( ) => {
439+ const wrapper = mount (
440+ < Menu activeKey = "1" >
441+ < MenuItem key = "1" >
442+ < input value = "123" />
443+ </ MenuItem >
444+ < MenuItem key = "2" >
445+ < textarea value = "123" />
446+ </ MenuItem >
447+ </ Menu > ,
448+ ) ;
449+
450+ const input = wrapper . find ( 'input' ) ;
451+ input . simulate ( 'focus' ) ;
452+ const inputNode = input . getDOMNode ( ) ;
453+ expect ( inputNode . selectionStart ) . toEqual ( 0 ) ;
454+ input . simulate ( 'keyDown' , { which : KeyCode . RIGHT } ) ;
455+ expect ( inputNode . selectionStart ) . toEqual ( 1 ) ;
456+ input . simulate ( 'keyDown' , { which : KeyCode . LEFT } ) ;
457+ expect ( inputNode . selectionStart ) . toEqual ( 0 ) ;
458+
459+ const textarea = wrapper . find ( 'textarea' ) ;
460+ textarea . simulate ( 'focus' ) ;
461+ const textareaNode = textarea . getDOMNode ( ) ;
462+ expect ( textarea . selectionStart ) . toEqual ( 0 ) ;
463+ textareaNode . simulate ( 'keyDown' , { which : KeyCode . RIGHT } ) ;
464+ expect ( textarea . selectionStart ) . toEqual ( 1 ) ;
465+ textareaNode . simulate ( 'keyDown' , { which : KeyCode . LEFT } ) ;
466+ expect ( textarea . selectionStart ) . toEqual ( 0 ) ;
467+ } ) ;
468+
438469 it ( 'defaultActiveFirst' , ( ) => {
439470 const wrapper = mount (
440471 < Menu selectedKeys = { [ 'foo' ] } defaultActiveFirst >
0 commit comments