@@ -711,8 +711,12 @@ describe('jqLite', function() {
711
711
describe ( 'class' , function ( ) {
712
712
713
713
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
+
716
720
var svg = jqLite ( '<svg><rect></rect></svg>' ) ;
717
721
var rect = svg . children ( ) ;
718
722
@@ -1549,6 +1553,10 @@ describe('jqLite', function() {
1549
1553
1550
1554
1551
1555
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 ;
1552
1560
1553
1561
it ( 'should deregister the native listener when all jqLite listeners for given type are gone ' +
1554
1562
'after off("eventName", listener) call' , function ( ) {
@@ -1560,12 +1568,22 @@ describe('jqLite', function() {
1560
1568
var jqLiteListener = function ( ) { } ;
1561
1569
aElem . on ( 'click' , jqLiteListener ) ;
1562
1570
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
+ }
1564
1578
nativeListenerFn = addEventListenerSpy . calls . mostRecent ( ) . args [ 1 ] ;
1565
1579
expect ( removeEventListenerSpy ) . not . toHaveBeenCalled ( ) ;
1566
1580
1567
1581
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
+ }
1569
1587
} ) ;
1570
1588
1571
1589
@@ -1577,12 +1595,20 @@ describe('jqLite', function() {
1577
1595
var nativeListenerFn ;
1578
1596
1579
1597
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
+ }
1581
1603
nativeListenerFn = addEventListenerSpy . calls . mostRecent ( ) . args [ 1 ] ;
1582
1604
expect ( removeEventListenerSpy ) . not . toHaveBeenCalled ( ) ;
1583
1605
1584
1606
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
+ }
1586
1612
} ) ;
1587
1613
1588
1614
@@ -1594,19 +1620,32 @@ describe('jqLite', function() {
1594
1620
var nativeListenerFn ;
1595
1621
1596
1622
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
+ }
1598
1628
nativeListenerFn = addEventListenerSpy . calls . mostRecent ( ) . args [ 1 ] ;
1599
1629
addEventListenerSpy . calls . reset ( ) ;
1600
1630
1601
1631
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
+ }
1603
1637
1604
1638
expect ( removeEventListenerSpy ) . not . toHaveBeenCalled ( ) ;
1605
1639
1606
1640
aElem . off ( 'click dblclick' ) ;
1607
1641
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
+ }
1610
1649
expect ( removeEventListenerSpy ) . toHaveBeenCalledTimes ( 2 ) ;
1611
1650
} ) ;
1612
1651
@@ -1619,17 +1658,30 @@ describe('jqLite', function() {
1619
1658
var nativeListenerFn ;
1620
1659
1621
1660
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
+ }
1623
1666
nativeListenerFn = addEventListenerSpy . calls . mostRecent ( ) . args [ 1 ] ;
1624
1667
addEventListenerSpy . calls . reset ( ) ;
1625
1668
1626
1669
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
+ }
1628
1675
1629
1676
aElem . off ( ) ;
1630
1677
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
+ }
1633
1685
expect ( removeEventListenerSpy ) . toHaveBeenCalledTimes ( 2 ) ;
1634
1686
} ) ;
1635
1687
} ) ;
0 commit comments