@@ -243,77 +243,75 @@ describe('mdSidenav', function() {
243
243
describe ( "focus" , function ( ) {
244
244
245
245
var $material , $mdInteraction , $mdConstant ;
246
+ var triggerElement ;
246
247
247
- beforeEach ( inject ( function ( _$material_ , _$mdInteraction_ , _$mdConstant_ ) {
248
- $material = _$material_ ;
249
- $mdInteraction = _$mdInteraction_ ;
250
- $mdConstant = _$mdConstant_
248
+ beforeEach ( inject ( function ( $injector ) {
249
+ $material = $injector . get ( '$material' ) ;
250
+ $mdInteraction = $injector . get ( '$mdInteraction' ) ;
251
+ $mdConstant = $injector . get ( '$mdInteraction' ) ;
252
+
253
+ triggerElement = angular . element ( '<button>Trigger Element</button>' ) ;
254
+ document . body . appendChild ( triggerElement [ 0 ] ) ;
251
255
} ) ) ;
252
256
257
+ afterEach ( function ( ) {
258
+ triggerElement . remove ( ) ;
259
+ } ) ;
260
+
261
+ function dispatchEvent ( eventName ) {
262
+ angular . element ( document . body ) . triggerHandler ( eventName ) ;
263
+ }
264
+
253
265
function flush ( ) {
254
266
$material . flushInterimElement ( ) ;
255
267
}
256
268
257
- function setupTrigger ( ) {
258
- var el ;
259
- inject ( function ( $compile , $rootScope ) {
260
- var parent = angular . element ( document . body ) ;
261
- el = angular . element ( '<button>Toggle</button>' ) ;
262
- parent . append ( el ) ;
263
- $compile ( parent ) ( $rootScope ) ;
264
- $rootScope . $apply ( ) ;
265
- } ) ;
266
- return el ;
269
+ function blur ( ) {
270
+ if ( 'documentMode' in document ) {
271
+ document . body . focus ( ) ;
272
+ } else {
273
+ triggerElement . blur ( ) ;
274
+ }
267
275
}
268
276
269
- it ( "should restore after sidenav triggered by keyboard" , function ( done ) {
270
- var sidenavElement = setup ( '' ) ;
271
- var triggerElement = setupTrigger ( ) ;
272
- var controller = sidenavElement . controller ( 'mdSidenav' ) ;
277
+ it ( "should restore after sidenav triggered by keyboard" , function ( ) {
278
+ var sidenavEl = setup ( '' ) ;
279
+ var controller = sidenavEl . controller ( 'mdSidenav' ) ;
273
280
274
281
triggerElement . focus ( ) ;
275
282
276
- var keyboardEvent = document . createEvent ( "KeyboardEvent" ) ;
277
- keyboardEvent . initEvent ( "keydown" , true , true , window , 0 , 0 , 0 , 0 , $mdConstant . KEY_CODE . ENTER , $mdConstant . KEY_CODE . ENTER ) ;
278
- triggerElement [ 0 ] . dispatchEvent ( keyboardEvent ) ;
283
+ dispatchEvent ( 'keydown' ) ;
279
284
280
285
controller . $toggleOpen ( true ) ;
281
286
flush ( ) ;
282
287
283
- triggerElement . blur ( ) ;
288
+ blur ( ) ;
284
289
285
290
controller . $toggleOpen ( false ) ;
286
291
flush ( ) ;
287
292
288
293
expect ( $mdInteraction . getLastInteractionType ( ) ) . toBe ( "keyboard" ) ;
289
294
expect ( document . activeElement ) . toBe ( triggerElement [ 0 ] ) ;
290
- done ( ) ;
291
295
} ) ;
292
296
293
- it ( "should not restore after sidenav triggered by mouse" , function ( done ) {
294
- var sidenavElement = setup ( '' ) ;
295
- var triggerElement = setupTrigger ( ) ;
296
- var controller = sidenavElement . controller ( 'mdSidenav' ) ;
297
+ it ( "should not restore after sidenav triggered by mouse" , function ( ) {
298
+ var sidenavEl = setup ( '' ) ;
299
+ var controller = sidenavEl . controller ( 'mdSidenav' ) ;
297
300
298
301
triggerElement . focus ( ) ;
299
302
300
- var mouseEvent = document . createEvent ( "MouseEvent" ) ;
301
- mouseEvent . initMouseEvent ( "mousedown" , true , true , window , null , 0 , 0 , 0 , 0 , false , false , false , false , 0 , null ) ;
302
- triggerElement [ 0 ] . dispatchEvent ( mouseEvent ) ;
303
+ dispatchEvent ( 'mousedown' ) ;
303
304
304
305
controller . $toggleOpen ( true ) ;
305
306
flush ( ) ;
306
307
307
- expect ( document . activeElement ) . toBe ( triggerElement [ 0 ] ) ;
308
-
309
- triggerElement . blur ( ) ;
308
+ blur ( ) ;
310
309
311
310
controller . $toggleOpen ( false ) ;
312
311
flush ( ) ;
313
312
314
313
expect ( $mdInteraction . getLastInteractionType ( ) ) . toBe ( "mouse" ) ;
315
314
expect ( document . activeElement ) . not . toBe ( triggerElement [ 0 ] ) ;
316
- done ( ) ;
317
315
} ) ;
318
316
319
317
} ) ;
0 commit comments