Skip to content
This repository was archived by the owner on Sep 5, 2024. It is now read-only.

Commit 06b4345

Browse files
committed
Fix tests for IE11
1 parent c536ce9 commit 06b4345

File tree

3 files changed

+47
-48
lines changed

3 files changed

+47
-48
lines changed

src/components/sidenav/sidenav.spec.js

Lines changed: 32 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -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
});

src/core/services/interaction/interaction.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/*
1+
/**
22
* @ngdoc module
33
* @name material.core.interaction
44
* @description
@@ -9,7 +9,7 @@ angular
99
.service('$mdInteraction', MdInteractionService);
1010

1111

12-
/*
12+
/**
1313
* @ngdoc service
1414
* @name $mdInteraction
1515
* @module material.core.interaction
@@ -125,7 +125,7 @@ MdInteractionService.prototype.onBufferInputEvent = function(event) {
125125
* @ngdoc method
126126
* @name $mdInteraction#getLastInteractionType
127127
* @description Retrieves the last interaction type triggered in body.
128-
* @returns {'mouse'|'keyboard'|'touch'} Last interaction type.
128+
* @returns {string|null} Last interaction type.
129129
*/
130130
MdInteractionService.prototype.getLastInteractionType = function() {
131131
return this.lastInteractionType;

src/core/services/interaction/interaction.spec.js

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,28 @@ describe("$mdInteraction service", function() {
33

44
beforeEach(module('material.core'));
55

6-
beforeEach(inject(function(_$mdInteraction_) {
7-
$mdInteraction = _$mdInteraction_;
6+
beforeEach(inject(function($injector) {
7+
$mdInteraction = $injector.get('$mdInteraction');
88
}));
99

1010
describe("last interaction type", function() {
1111

12-
it("imitates a basic keyboard interaction and checks it", function() {
12+
var bodyElement = null;
1313

14-
var event = document.createEvent('Event');
15-
event.keyCode = 37;
16-
event.initEvent('keydown', false, true);
17-
document.body.dispatchEvent(event);
14+
beforeEach(function() {
15+
bodyElement = angular.element(document.body);
16+
});
17+
18+
it("should detect a keyboard interaction", function() {
19+
20+
bodyElement.triggerHandler('keydown');
1821

1922
expect($mdInteraction.getLastInteractionType()).toBe('keyboard');
2023
});
2124

22-
it("dispatches a mousedown event on the document body and checks it", function() {
25+
it("should detect a mouse interaction", function() {
2326

24-
var event = document.createEvent("MouseEvent");
25-
event.initMouseEvent("mousedown", true, true, window, null, 0, 0, 0, 0, false, false, false, false, 0, null);
26-
document.body.dispatchEvent(event);
27+
bodyElement.triggerHandler('mousedown');
2728

2829
expect($mdInteraction.getLastInteractionType()).toBe("mouse");
2930
});

0 commit comments

Comments
 (0)