@@ -707,8 +707,12 @@ describe('jqLite', function() {
707
707
describe ( 'class' , function ( ) {
708
708
709
709
it ( 'should properly do with SVG elements' , function ( ) {
710
- // this is a jqLite & SVG only test (jquery doesn't behave this way right now, which is a bug)
711
- if ( ! window . SVGElement || ! _jqLiteMode ) return ;
710
+ // This is not working correctly in jQuery prior to v3.0.
711
+ // See https://github.com/jquery/jquery/issues/2199 for details.
712
+ var jQueryVersion = window . jQuery && window . jQuery . fn . jquery . split ( '.' ) [ 0 ] ;
713
+ var jQuery3xOrNewer = jQueryVersion && ( Number ( jQueryVersion ) >= 3 ) ;
714
+ if ( ! _jqLiteMode && ! jQuery3xOrNewer ) return ;
715
+
712
716
var svg = jqLite ( '<svg><rect></rect></svg>' ) ;
713
717
var rect = svg . children ( ) ;
714
718
@@ -1532,6 +1536,10 @@ describe('jqLite', function() {
1532
1536
1533
1537
1534
1538
describe ( 'native listener deregistration' , function ( ) {
1539
+ var jQueryVersionString = window . jQuery && window . jQuery . fn . jquery ;
1540
+ var jQueryMajor = jQueryVersionString && Number ( jQueryVersionString . split ( '.' ) [ 0 ] ) ;
1541
+ var jQueryMinor = jQueryVersionString && Number ( jQueryVersionString . split ( '.' ) [ 1 ] ) ;
1542
+ var jQuery21 = jQueryMajor === 2 && jQueryMinor === 1 ;
1535
1543
1536
1544
it ( 'should deregister the native listener when all jqLite listeners for given type are gone ' +
1537
1545
'after off("eventName", listener) call' , function ( ) {
@@ -1543,12 +1551,22 @@ describe('jqLite', function() {
1543
1551
var jqLiteListener = function ( ) { } ;
1544
1552
aElem . on ( 'click' , jqLiteListener ) ;
1545
1553
1546
- expect ( addEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'click' , jasmine . any ( Function ) , false ) ;
1554
+ // jQuery <2.2 passes the non-needed `false` useCapture parameter.
1555
+ // See https://github.com/jquery/jquery/issues/2199 for details.
1556
+ if ( jQuery21 ) {
1557
+ expect ( addEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'click' , jasmine . any ( Function ) , false ) ;
1558
+ } else {
1559
+ expect ( addEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'click' , jasmine . any ( Function ) ) ;
1560
+ }
1547
1561
nativeListenerFn = addEventListenerSpy . mostRecentCall . args [ 1 ] ;
1548
1562
expect ( removeEventListenerSpy ) . not . toHaveBeenCalled ( ) ;
1549
1563
1550
1564
aElem . off ( 'click' , jqLiteListener ) ;
1551
- expect ( removeEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'click' , nativeListenerFn , false ) ;
1565
+ if ( jQuery21 ) {
1566
+ expect ( removeEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'click' , nativeListenerFn , false ) ;
1567
+ } else {
1568
+ expect ( removeEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'click' , nativeListenerFn ) ;
1569
+ }
1552
1570
} ) ;
1553
1571
1554
1572
@@ -1560,12 +1578,20 @@ describe('jqLite', function() {
1560
1578
var nativeListenerFn ;
1561
1579
1562
1580
aElem . on ( 'click' , function ( ) { } ) ;
1563
- expect ( addEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'click' , jasmine . any ( Function ) , false ) ;
1581
+ if ( jQuery21 ) {
1582
+ expect ( addEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'click' , jasmine . any ( Function ) , false ) ;
1583
+ } else {
1584
+ expect ( addEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'click' , jasmine . any ( Function ) ) ;
1585
+ }
1564
1586
nativeListenerFn = addEventListenerSpy . mostRecentCall . args [ 1 ] ;
1565
1587
expect ( removeEventListenerSpy ) . not . toHaveBeenCalled ( ) ;
1566
1588
1567
1589
aElem . off ( 'click' ) ;
1568
- expect ( removeEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'click' , nativeListenerFn , false ) ;
1590
+ if ( jQuery21 ) {
1591
+ expect ( removeEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'click' , nativeListenerFn , false ) ;
1592
+ } else {
1593
+ expect ( removeEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'click' , nativeListenerFn ) ;
1594
+ }
1569
1595
} ) ;
1570
1596
1571
1597
@@ -1577,19 +1603,32 @@ describe('jqLite', function() {
1577
1603
var nativeListenerFn ;
1578
1604
1579
1605
aElem . on ( 'click' , function ( ) { } ) ;
1580
- expect ( addEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'click' , jasmine . any ( Function ) , false ) ;
1606
+ if ( jQuery21 ) {
1607
+ expect ( addEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'click' , jasmine . any ( Function ) , false ) ;
1608
+ } else {
1609
+ expect ( addEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'click' , jasmine . any ( Function ) ) ;
1610
+ }
1581
1611
nativeListenerFn = addEventListenerSpy . mostRecentCall . args [ 1 ] ;
1582
1612
addEventListenerSpy . reset ( ) ;
1583
1613
1584
1614
aElem . on ( 'dblclick' , function ( ) { } ) ;
1585
- expect ( addEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'dblclick' , nativeListenerFn , false ) ;
1615
+ if ( jQuery21 ) {
1616
+ expect ( addEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'dblclick' , nativeListenerFn , false ) ;
1617
+ } else {
1618
+ expect ( addEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'dblclick' , nativeListenerFn ) ;
1619
+ }
1586
1620
1587
1621
expect ( removeEventListenerSpy ) . not . toHaveBeenCalled ( ) ;
1588
1622
1589
1623
aElem . off ( 'click dblclick' ) ;
1590
1624
1591
- expect ( removeEventListenerSpy ) . toHaveBeenCalledWith ( 'click' , nativeListenerFn , false ) ;
1592
- expect ( removeEventListenerSpy ) . toHaveBeenCalledWith ( 'dblclick' , nativeListenerFn , false ) ;
1625
+ if ( jQuery21 ) {
1626
+ expect ( removeEventListenerSpy ) . toHaveBeenCalledWith ( 'click' , nativeListenerFn , false ) ;
1627
+ expect ( removeEventListenerSpy ) . toHaveBeenCalledWith ( 'dblclick' , nativeListenerFn , false ) ;
1628
+ } else {
1629
+ expect ( removeEventListenerSpy ) . toHaveBeenCalledWith ( 'click' , nativeListenerFn ) ;
1630
+ expect ( removeEventListenerSpy ) . toHaveBeenCalledWith ( 'dblclick' , nativeListenerFn ) ;
1631
+ }
1593
1632
expect ( removeEventListenerSpy . callCount ) . toBe ( 2 ) ;
1594
1633
} ) ;
1595
1634
@@ -1602,17 +1641,30 @@ describe('jqLite', function() {
1602
1641
var nativeListenerFn ;
1603
1642
1604
1643
aElem . on ( 'click' , function ( ) { } ) ;
1605
- expect ( addEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'click' , jasmine . any ( Function ) , false ) ;
1644
+ if ( jQuery21 ) {
1645
+ expect ( addEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'click' , jasmine . any ( Function ) , false ) ;
1646
+ } else {
1647
+ expect ( addEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'click' , jasmine . any ( Function ) ) ;
1648
+ }
1606
1649
nativeListenerFn = addEventListenerSpy . mostRecentCall . args [ 1 ] ;
1607
1650
addEventListenerSpy . reset ( ) ;
1608
1651
1609
1652
aElem . on ( 'dblclick' , function ( ) { } ) ;
1610
- expect ( addEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'dblclick' , nativeListenerFn , false ) ;
1653
+ if ( jQuery21 ) {
1654
+ expect ( addEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'dblclick' , nativeListenerFn , false ) ;
1655
+ } else {
1656
+ expect ( addEventListenerSpy ) . toHaveBeenCalledOnceWith ( 'dblclick' , nativeListenerFn ) ;
1657
+ }
1611
1658
1612
1659
aElem . off ( ) ;
1613
1660
1614
- expect ( removeEventListenerSpy ) . toHaveBeenCalledWith ( 'click' , nativeListenerFn , false ) ;
1615
- expect ( removeEventListenerSpy ) . toHaveBeenCalledWith ( 'dblclick' , nativeListenerFn , false ) ;
1661
+ if ( jQuery21 ) {
1662
+ expect ( removeEventListenerSpy ) . toHaveBeenCalledWith ( 'click' , nativeListenerFn , false ) ;
1663
+ expect ( removeEventListenerSpy ) . toHaveBeenCalledWith ( 'dblclick' , nativeListenerFn , false ) ;
1664
+ } else {
1665
+ expect ( removeEventListenerSpy ) . toHaveBeenCalledWith ( 'click' , nativeListenerFn ) ;
1666
+ expect ( removeEventListenerSpy ) . toHaveBeenCalledWith ( 'dblclick' , nativeListenerFn ) ;
1667
+ }
1616
1668
expect ( removeEventListenerSpy . callCount ) . toBe ( 2 ) ;
1617
1669
} ) ;
1618
1670
} ) ;
0 commit comments