@@ -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
@@ -1536,6 +1540,10 @@ describe('jqLite', function() {
1536
1540
1537
1541
1538
1542
describe ( 'native listener deregistration' , function ( ) {
1543
+ var jQueryVersionString = window . jQuery && window . jQuery . fn . jquery ;
1544
+ var jQueryMajor = jQueryVersionString && Number ( jQueryVersionString . split ( '.' ) [ 0 ] ) ;
1545
+ var jQueryMinor = jQueryVersionString && Number ( jQueryVersionString . split ( '.' ) [ 1 ] ) ;
1546
+ var jQuery21 = jQueryMajor === 2 && jQueryMinor === 1 ;
1539
1547
1540
1548
it ( 'should deregister the native listener when all jqLite listeners for given type are gone ' +
1541
1549
'after off("eventName", listener) call' , function ( ) {
@@ -1547,12 +1555,22 @@ describe('jqLite', function() {
1547
1555
var jqLiteListener = function ( ) { } ;
1548
1556
aElem . on ( 'click' , jqLiteListener ) ;
1549
1557
1550
- expect ( addEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'click' , jasmine . any ( Function ) , false ) ;
1558
+ // jQuery <2.2 passes the non-needed `false` useCapture parameter.
1559
+ // See https://github.com/jquery/jquery/issues/2199 for details.
1560
+ if ( jQuery21 ) {
1561
+ expect ( addEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'click' , jasmine . any ( Function ) , false ) ;
1562
+ } else {
1563
+ expect ( addEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'click' , jasmine . any ( Function ) ) ;
1564
+ }
1551
1565
nativeListenerFn = addEventListenerSpy . calls . mostRecent ( ) . args [ 1 ] ;
1552
1566
expect ( removeEventListenerSpy ) . not . toHaveBeenCalled ( ) ;
1553
1567
1554
1568
aElem . off ( 'click' , jqLiteListener ) ;
1555
- expect ( removeEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'click' , nativeListenerFn , false ) ;
1569
+ if ( jQuery21 ) {
1570
+ expect ( removeEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'click' , nativeListenerFn , false ) ;
1571
+ } else {
1572
+ expect ( removeEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'click' , nativeListenerFn ) ;
1573
+ }
1556
1574
} ) ;
1557
1575
1558
1576
@@ -1564,12 +1582,20 @@ describe('jqLite', function() {
1564
1582
var nativeListenerFn ;
1565
1583
1566
1584
aElem . on ( 'click' , function ( ) { } ) ;
1567
- expect ( addEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'click' , jasmine . any ( Function ) , false ) ;
1585
+ if ( jQuery21 ) {
1586
+ expect ( addEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'click' , jasmine . any ( Function ) , false ) ;
1587
+ } else {
1588
+ expect ( addEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'click' , jasmine . any ( Function ) ) ;
1589
+ }
1568
1590
nativeListenerFn = addEventListenerSpy . calls . mostRecent ( ) . args [ 1 ] ;
1569
1591
expect ( removeEventListenerSpy ) . not . toHaveBeenCalled ( ) ;
1570
1592
1571
1593
aElem . off ( 'click' ) ;
1572
- expect ( removeEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'click' , nativeListenerFn , false ) ;
1594
+ if ( jQuery21 ) {
1595
+ expect ( removeEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'click' , nativeListenerFn , false ) ;
1596
+ } else {
1597
+ expect ( removeEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'click' , nativeListenerFn ) ;
1598
+ }
1573
1599
} ) ;
1574
1600
1575
1601
@@ -1581,19 +1607,32 @@ describe('jqLite', function() {
1581
1607
var nativeListenerFn ;
1582
1608
1583
1609
aElem . on ( 'click' , function ( ) { } ) ;
1584
- expect ( addEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'click' , jasmine . any ( Function ) , false ) ;
1610
+ if ( jQuery21 ) {
1611
+ expect ( addEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'click' , jasmine . any ( Function ) , false ) ;
1612
+ } else {
1613
+ expect ( addEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'click' , jasmine . any ( Function ) ) ;
1614
+ }
1585
1615
nativeListenerFn = addEventListenerSpy . calls . mostRecent ( ) . args [ 1 ] ;
1586
1616
addEventListenerSpy . calls . reset ( ) ;
1587
1617
1588
1618
aElem . on ( 'dblclick' , function ( ) { } ) ;
1589
- expect ( addEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'dblclick' , nativeListenerFn , false ) ;
1619
+ if ( jQuery21 ) {
1620
+ expect ( addEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'dblclick' , nativeListenerFn , false ) ;
1621
+ } else {
1622
+ expect ( addEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'dblclick' , nativeListenerFn ) ;
1623
+ }
1590
1624
1591
1625
expect ( removeEventListenerSpy ) . not . toHaveBeenCalled ( ) ;
1592
1626
1593
1627
aElem . off ( 'click dblclick' ) ;
1594
1628
1595
- expect ( removeEventListenerSpy ) . toHaveBeenCalledWith ( 'click' , nativeListenerFn , false ) ;
1596
- expect ( removeEventListenerSpy ) . toHaveBeenCalledWith ( 'dblclick' , nativeListenerFn , false ) ;
1629
+ if ( jQuery21 ) {
1630
+ expect ( removeEventListenerSpy ) . toHaveBeenCalledWith ( 'click' , nativeListenerFn , false ) ;
1631
+ expect ( removeEventListenerSpy ) . toHaveBeenCalledWith ( 'dblclick' , nativeListenerFn , false ) ;
1632
+ } else {
1633
+ expect ( removeEventListenerSpy ) . toHaveBeenCalledWith ( 'click' , nativeListenerFn ) ;
1634
+ expect ( removeEventListenerSpy ) . toHaveBeenCalledWith ( 'dblclick' , nativeListenerFn ) ;
1635
+ }
1597
1636
expect ( removeEventListenerSpy ) . toHaveBeenCalledTimes ( 2 ) ;
1598
1637
} ) ;
1599
1638
@@ -1606,17 +1645,30 @@ describe('jqLite', function() {
1606
1645
var nativeListenerFn ;
1607
1646
1608
1647
aElem . on ( 'click' , function ( ) { } ) ;
1609
- expect ( addEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'click' , jasmine . any ( Function ) , false ) ;
1648
+ if ( jQuery21 ) {
1649
+ expect ( addEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'click' , jasmine . any ( Function ) , false ) ;
1650
+ } else {
1651
+ expect ( addEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'click' , jasmine . any ( Function ) ) ;
1652
+ }
1610
1653
nativeListenerFn = addEventListenerSpy . calls . mostRecent ( ) . args [ 1 ] ;
1611
1654
addEventListenerSpy . calls . reset ( ) ;
1612
1655
1613
1656
aElem . on ( 'dblclick' , function ( ) { } ) ;
1614
- expect ( addEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'dblclick' , nativeListenerFn , false ) ;
1657
+ if ( jQuery21 ) {
1658
+ expect ( addEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'dblclick' , nativeListenerFn , false ) ;
1659
+ } else {
1660
+ expect ( addEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'dblclick' , nativeListenerFn ) ;
1661
+ }
1615
1662
1616
1663
aElem . off ( ) ;
1617
1664
1618
- expect ( removeEventListenerSpy ) . toHaveBeenCalledWith ( 'click' , nativeListenerFn , false ) ;
1619
- expect ( removeEventListenerSpy ) . toHaveBeenCalledWith ( 'dblclick' , nativeListenerFn , false ) ;
1665
+ if ( jQuery21 ) {
1666
+ expect ( removeEventListenerSpy ) . toHaveBeenCalledWith ( 'click' , nativeListenerFn , false ) ;
1667
+ expect ( removeEventListenerSpy ) . toHaveBeenCalledWith ( 'dblclick' , nativeListenerFn , false ) ;
1668
+ } else {
1669
+ expect ( removeEventListenerSpy ) . toHaveBeenCalledWith ( 'click' , nativeListenerFn ) ;
1670
+ expect ( removeEventListenerSpy ) . toHaveBeenCalledWith ( 'dblclick' , nativeListenerFn ) ;
1671
+ }
1620
1672
expect ( removeEventListenerSpy ) . toHaveBeenCalledTimes ( 2 ) ;
1621
1673
} ) ;
1622
1674
} ) ;
0 commit comments