@@ -233,6 +233,30 @@ describe('MatSelectionList without forms', () => {
233233 expect ( manager . activeItemIndex ) . toEqual ( 1 ) ;
234234 } ) ;
235235
236+ it ( 'should focus and toggle the next item when pressing SHIFT + UP_ARROW' , ( ) => {
237+ const manager = selectionList . componentInstance . _keyManager ;
238+ const upKeyEvent = createKeyboardEvent ( 'keydown' , UP_ARROW ) ;
239+ Object . defineProperty ( upKeyEvent , 'shiftKey' , { get : ( ) => true } ) ;
240+
241+ dispatchFakeEvent ( listOptions [ 3 ] . nativeElement , 'focus' ) ;
242+ expect ( manager . activeItemIndex ) . toBe ( 3 ) ;
243+
244+ expect ( listOptions [ 1 ] . componentInstance . selected ) . toBe ( false ) ;
245+ expect ( listOptions [ 2 ] . componentInstance . selected ) . toBe ( false ) ;
246+
247+ selectionList . componentInstance . _keydown ( upKeyEvent ) ;
248+ fixture . detectChanges ( ) ;
249+
250+ expect ( listOptions [ 1 ] . componentInstance . selected ) . toBe ( false ) ;
251+ expect ( listOptions [ 2 ] . componentInstance . selected ) . toBe ( true ) ;
252+
253+ selectionList . componentInstance . _keydown ( upKeyEvent ) ;
254+ fixture . detectChanges ( ) ;
255+
256+ expect ( listOptions [ 1 ] . componentInstance . selected ) . toBe ( true ) ;
257+ expect ( listOptions [ 2 ] . componentInstance . selected ) . toBe ( true ) ;
258+ } ) ;
259+
236260 it ( 'should focus next item when press DOWN ARROW' , ( ) => {
237261 const manager = selectionList . componentInstance . _keyManager ;
238262
@@ -245,6 +269,30 @@ describe('MatSelectionList without forms', () => {
245269 expect ( manager . activeItemIndex ) . toEqual ( 3 ) ;
246270 } ) ;
247271
272+ it ( 'should focus and toggle the next item when pressing SHIFT + DOWN_ARROW' , ( ) => {
273+ const manager = selectionList . componentInstance . _keyManager ;
274+ const downKeyEvent = createKeyboardEvent ( 'keydown' , DOWN_ARROW ) ;
275+ Object . defineProperty ( downKeyEvent , 'shiftKey' , { get : ( ) => true } ) ;
276+
277+ dispatchFakeEvent ( listOptions [ 0 ] . nativeElement , 'focus' ) ;
278+ expect ( manager . activeItemIndex ) . toBe ( 0 ) ;
279+
280+ expect ( listOptions [ 1 ] . componentInstance . selected ) . toBe ( false ) ;
281+ expect ( listOptions [ 2 ] . componentInstance . selected ) . toBe ( false ) ;
282+
283+ selectionList . componentInstance . _keydown ( downKeyEvent ) ;
284+ fixture . detectChanges ( ) ;
285+
286+ expect ( listOptions [ 1 ] . componentInstance . selected ) . toBe ( true ) ;
287+ expect ( listOptions [ 2 ] . componentInstance . selected ) . toBe ( false ) ;
288+
289+ selectionList . componentInstance . _keydown ( downKeyEvent ) ;
290+ fixture . detectChanges ( ) ;
291+
292+ expect ( listOptions [ 1 ] . componentInstance . selected ) . toBe ( true ) ;
293+ expect ( listOptions [ 2 ] . componentInstance . selected ) . toBe ( true ) ;
294+ } ) ;
295+
248296 it ( 'should be able to focus the first item when pressing HOME' , ( ) => {
249297 const manager = selectionList . componentInstance . _keyManager ;
250298 expect ( manager . activeItemIndex ) . toBe ( - 1 ) ;
0 commit comments