@@ -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