@@ -243,77 +243,75 @@ describe('mdSidenav', function() {
243243 describe ( "focus" , function ( ) {
244244
245245 var $material , $mdInteraction , $mdConstant ;
246+ var triggerElement ;
246247
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 ] ) ;
251255 } ) ) ;
252256
257+ afterEach ( function ( ) {
258+ triggerElement . remove ( ) ;
259+ } ) ;
260+
261+ function dispatchEvent ( eventName ) {
262+ angular . element ( document . body ) . triggerHandler ( eventName ) ;
263+ }
264+
253265 function flush ( ) {
254266 $material . flushInterimElement ( ) ;
255267 }
256268
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+ }
267275 }
268276
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' ) ;
273280
274281 triggerElement . focus ( ) ;
275282
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' ) ;
279284
280285 controller . $toggleOpen ( true ) ;
281286 flush ( ) ;
282287
283- triggerElement . blur ( ) ;
288+ blur ( ) ;
284289
285290 controller . $toggleOpen ( false ) ;
286291 flush ( ) ;
287292
288293 expect ( $mdInteraction . getLastInteractionType ( ) ) . toBe ( "keyboard" ) ;
289294 expect ( document . activeElement ) . toBe ( triggerElement [ 0 ] ) ;
290- done ( ) ;
291295 } ) ;
292296
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' ) ;
297300
298301 triggerElement . focus ( ) ;
299302
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' ) ;
303304
304305 controller . $toggleOpen ( true ) ;
305306 flush ( ) ;
306307
307- expect ( document . activeElement ) . toBe ( triggerElement [ 0 ] ) ;
308-
309- triggerElement . blur ( ) ;
308+ blur ( ) ;
310309
311310 controller . $toggleOpen ( false ) ;
312311 flush ( ) ;
313312
314313 expect ( $mdInteraction . getLastInteractionType ( ) ) . toBe ( "mouse" ) ;
315314 expect ( document . activeElement ) . not . toBe ( triggerElement [ 0 ] ) ;
316- done ( ) ;
317315 } ) ;
318316
319317 } ) ;
0 commit comments