Skip to content

Commit b1d58ce

Browse files
committed
.
1 parent 9a27cd9 commit b1d58ce

File tree

1 file changed

+27
-1
lines changed

1 file changed

+27
-1
lines changed

src/lib/checkbox/checkbox.spec.ts

+27-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,32 @@ import {FakeViewportRuler} from '../core/overlay/position/fake-viewport-ruler';
1010
describe('MdCheckbox', () => {
1111
let fixture: ComponentFixture<any>;
1212

13+
/** Creates a DOM mouse event. */
14+
const createMouseEvent = (eventType: string, dict: any = {}) => {
15+
// Ideally this would just be "return new MouseEvent(eventType, dict)". But IE11 doesn't support
16+
// the MouseEvent constructor, and Edge inexplicably divides clientX and clientY by 100 to get
17+
// pageX and pageY. (Really. After "e = new MouseEvent('click', {clientX: 200, clientY: 300})",
18+
// e.clientX is 200, e.pageX is 2, e.clientY is 300, and e.pageY is 3.)
19+
// So instead we use the deprecated createEvent/initMouseEvent API, which works everywhere.
20+
const event = document.createEvent('MouseEvents');
21+
event.initMouseEvent(eventType,
22+
false, /* canBubble */
23+
false, /* cancelable */
24+
window, /* view */
25+
0, /* detail */
26+
dict.screenX || 0,
27+
dict.screenY || 0,
28+
dict.clientX || 0,
29+
dict.clientY || 0,
30+
false, /* ctrlKey */
31+
false, /* altKey */
32+
false, /* shiftKey */
33+
false, /* metaKey */
34+
0, /* button */
35+
null /* relatedTarget */);
36+
return event;
37+
};
38+
1339
beforeEach(async(() => {
1440
TestBed.configureTestingModule({
1541
imports: [MdCheckboxModule.forRoot(), FormsModule, ReactiveFormsModule],
@@ -388,7 +414,7 @@ describe('MdCheckbox', () => {
388414
testComponent.isIndeterminate = true;
389415
fixture.detectChanges();
390416

391-
inputElement.click();
417+
inputElement.dispatchEvent(createMouseEvent('click'));
392418
fixture.detectChanges();
393419

394420
expect(checkboxNativeElement.classList).not.toContain(

0 commit comments

Comments
 (0)