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

Commit df9b57a

Browse files
committed
test(jqLite): make add/removeEventListener tests work with jQuery 2.1
The useCapture parameter defaults to false even in oldest of our supported browsers; this is no longer needed so jQuery has removed it in 2.2. In Angular 1.6 we apply the same refactoring, here in 1.5 we're just making tests work with jQuery 2.2.
1 parent fee2077 commit df9b57a

File tree

1 file changed

+66
-14
lines changed

1 file changed

+66
-14
lines changed

test/jqLiteSpec.js

Lines changed: 66 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -711,8 +711,12 @@ describe('jqLite', function() {
711711
describe('class', function() {
712712

713713
it('should properly do with SVG elements', function() {
714-
// this is a jqLite & SVG only test (jquery doesn't behave this way right now, which is a bug)
715-
if (!window.SVGElement || !_jqLiteMode) return;
714+
// This is not working correctly in jQuery prior to v3.0.
715+
// See https://github.com/jquery/jquery/issues/2199 for details.
716+
var jQueryVersion = window.jQuery && window.jQuery.fn.jquery.split('.')[0];
717+
var jQuery3xOrNewer = jQueryVersion && (Number(jQueryVersion) >= 3);
718+
if (!_jqLiteMode && !jQuery3xOrNewer) return;
719+
716720
var svg = jqLite('<svg><rect></rect></svg>');
717721
var rect = svg.children();
718722

@@ -1549,6 +1553,10 @@ describe('jqLite', function() {
15491553

15501554

15511555
describe('native listener deregistration', function() {
1556+
var jQueryVersionString = window.jQuery && window.jQuery.fn.jquery;
1557+
var jQueryMajor = jQueryVersionString && Number(jQueryVersionString.split('.')[0]);
1558+
var jQueryMinor = jQueryVersionString && Number(jQueryVersionString.split('.')[1]);
1559+
var jQuery21 = jQueryMajor === 2 && jQueryMinor === 1;
15521560

15531561
it('should deregister the native listener when all jqLite listeners for given type are gone ' +
15541562
'after off("eventName", listener) call', function() {
@@ -1560,12 +1568,22 @@ describe('jqLite', function() {
15601568
var jqLiteListener = function() {};
15611569
aElem.on('click', jqLiteListener);
15621570

1563-
expect(addEventListenerSpy).toHaveBeenCalledOnceWith('click', jasmine.any(Function), false);
1571+
// jQuery <2.2 & jqLite pass the non-needed `false` useCapture parameter.
1572+
// See https://github.com/jquery/jquery/issues/2199 for details.
1573+
if (jQuery21 || _jqLiteMode) {
1574+
expect(addEventListenerSpy).toHaveBeenCalledOnceWith('click', jasmine.any(Function), false);
1575+
} else {
1576+
expect(addEventListenerSpy).toHaveBeenCalledOnceWith('click', jasmine.any(Function));
1577+
}
15641578
nativeListenerFn = addEventListenerSpy.calls.mostRecent().args[1];
15651579
expect(removeEventListenerSpy).not.toHaveBeenCalled();
15661580

15671581
aElem.off('click', jqLiteListener);
1568-
expect(removeEventListenerSpy).toHaveBeenCalledOnceWith('click', nativeListenerFn, false);
1582+
if (jQuery21 || _jqLiteMode) {
1583+
expect(removeEventListenerSpy).toHaveBeenCalledOnceWith('click', nativeListenerFn, false);
1584+
} else {
1585+
expect(removeEventListenerSpy).toHaveBeenCalledOnceWith('click', nativeListenerFn);
1586+
}
15691587
});
15701588

15711589

@@ -1577,12 +1595,20 @@ describe('jqLite', function() {
15771595
var nativeListenerFn;
15781596

15791597
aElem.on('click', function() {});
1580-
expect(addEventListenerSpy).toHaveBeenCalledOnceWith('click', jasmine.any(Function), false);
1598+
if (jQuery21 || _jqLiteMode) {
1599+
expect(addEventListenerSpy).toHaveBeenCalledOnceWith('click', jasmine.any(Function), false);
1600+
} else {
1601+
expect(addEventListenerSpy).toHaveBeenCalledOnceWith('click', jasmine.any(Function));
1602+
}
15811603
nativeListenerFn = addEventListenerSpy.calls.mostRecent().args[1];
15821604
expect(removeEventListenerSpy).not.toHaveBeenCalled();
15831605

15841606
aElem.off('click');
1585-
expect(removeEventListenerSpy).toHaveBeenCalledOnceWith('click', nativeListenerFn, false);
1607+
if (jQuery21 || _jqLiteMode) {
1608+
expect(removeEventListenerSpy).toHaveBeenCalledOnceWith('click', nativeListenerFn, false);
1609+
} else {
1610+
expect(removeEventListenerSpy).toHaveBeenCalledOnceWith('click', nativeListenerFn);
1611+
}
15861612
});
15871613

15881614

@@ -1594,19 +1620,32 @@ describe('jqLite', function() {
15941620
var nativeListenerFn;
15951621

15961622
aElem.on('click', function() {});
1597-
expect(addEventListenerSpy).toHaveBeenCalledOnceWith('click', jasmine.any(Function), false);
1623+
if (jQuery21 || _jqLiteMode) {
1624+
expect(addEventListenerSpy).toHaveBeenCalledOnceWith('click', jasmine.any(Function), false);
1625+
} else {
1626+
expect(addEventListenerSpy).toHaveBeenCalledOnceWith('click', jasmine.any(Function));
1627+
}
15981628
nativeListenerFn = addEventListenerSpy.calls.mostRecent().args[1];
15991629
addEventListenerSpy.calls.reset();
16001630

16011631
aElem.on('dblclick', function() {});
1602-
expect(addEventListenerSpy).toHaveBeenCalledOnceWith('dblclick', nativeListenerFn, false);
1632+
if (jQuery21 || _jqLiteMode) {
1633+
expect(addEventListenerSpy).toHaveBeenCalledOnceWith('dblclick', nativeListenerFn, false);
1634+
} else {
1635+
expect(addEventListenerSpy).toHaveBeenCalledOnceWith('dblclick', nativeListenerFn);
1636+
}
16031637

16041638
expect(removeEventListenerSpy).not.toHaveBeenCalled();
16051639

16061640
aElem.off('click dblclick');
16071641

1608-
expect(removeEventListenerSpy).toHaveBeenCalledWith('click', nativeListenerFn, false);
1609-
expect(removeEventListenerSpy).toHaveBeenCalledWith('dblclick', nativeListenerFn, false);
1642+
if (jQuery21 || _jqLiteMode) {
1643+
expect(removeEventListenerSpy).toHaveBeenCalledWith('click', nativeListenerFn, false);
1644+
expect(removeEventListenerSpy).toHaveBeenCalledWith('dblclick', nativeListenerFn, false);
1645+
} else {
1646+
expect(removeEventListenerSpy).toHaveBeenCalledWith('click', nativeListenerFn);
1647+
expect(removeEventListenerSpy).toHaveBeenCalledWith('dblclick', nativeListenerFn);
1648+
}
16101649
expect(removeEventListenerSpy).toHaveBeenCalledTimes(2);
16111650
});
16121651

@@ -1619,17 +1658,30 @@ describe('jqLite', function() {
16191658
var nativeListenerFn;
16201659

16211660
aElem.on('click', function() {});
1622-
expect(addEventListenerSpy).toHaveBeenCalledOnceWith('click', jasmine.any(Function), false);
1661+
if (jQuery21 || _jqLiteMode) {
1662+
expect(addEventListenerSpy).toHaveBeenCalledOnceWith('click', jasmine.any(Function), false);
1663+
} else {
1664+
expect(addEventListenerSpy).toHaveBeenCalledOnceWith('click', jasmine.any(Function));
1665+
}
16231666
nativeListenerFn = addEventListenerSpy.calls.mostRecent().args[1];
16241667
addEventListenerSpy.calls.reset();
16251668

16261669
aElem.on('dblclick', function() {});
1627-
expect(addEventListenerSpy).toHaveBeenCalledOnceWith('dblclick', nativeListenerFn, false);
1670+
if (jQuery21 || _jqLiteMode) {
1671+
expect(addEventListenerSpy).toHaveBeenCalledOnceWith('dblclick', nativeListenerFn, false);
1672+
} else {
1673+
expect(addEventListenerSpy).toHaveBeenCalledOnceWith('dblclick', nativeListenerFn);
1674+
}
16281675

16291676
aElem.off();
16301677

1631-
expect(removeEventListenerSpy).toHaveBeenCalledWith('click', nativeListenerFn, false);
1632-
expect(removeEventListenerSpy).toHaveBeenCalledWith('dblclick', nativeListenerFn, false);
1678+
if (jQuery21 || _jqLiteMode) {
1679+
expect(removeEventListenerSpy).toHaveBeenCalledWith('click', nativeListenerFn, false);
1680+
expect(removeEventListenerSpy).toHaveBeenCalledWith('dblclick', nativeListenerFn, false);
1681+
} else {
1682+
expect(removeEventListenerSpy).toHaveBeenCalledWith('click', nativeListenerFn);
1683+
expect(removeEventListenerSpy).toHaveBeenCalledWith('dblclick', nativeListenerFn);
1684+
}
16331685
expect(removeEventListenerSpy).toHaveBeenCalledTimes(2);
16341686
});
16351687
});

0 commit comments

Comments
 (0)