diff options
| author | Michał Gołębiowski | 2013-06-19 20:52:50 +0100 | 
|---|---|---|
| committer | Pete Bacon Darwin | 2013-06-19 20:53:24 +0100 | 
| commit | f1b94b4b599ab701bc75b55bbbbb73c5ef329a93 (patch) | |
| tree | 033c39426a25c8ac86dc7dc4efb1b4d05fe05272 /test/jqLiteSpec.js | |
| parent | 0bfa29377d7a77b360ecd3209d56eeb4f68a5043 (diff) | |
| download | angular.js-f1b94b4b599ab701bc75b55bbbbb73c5ef329a93.tar.bz2 | |
feat(jqLite): switch bind/unbind to more recent jQuery on/off
jQuery switched to a completely new event binding implementation as of
1.7.0, centering around on/off methods instead of previous bind/unbind.
This patch makes jqLite match this implementation while still supporting
previous bind/unbind methods.
Diffstat (limited to 'test/jqLiteSpec.js')
| -rw-r--r-- | test/jqLiteSpec.js | 88 | 
1 files changed, 56 insertions, 32 deletions
| diff --git a/test/jqLiteSpec.js b/test/jqLiteSpec.js index f121e1a0..f6630536 100644 --- a/test/jqLiteSpec.js +++ b/test/jqLiteSpec.js @@ -268,7 +268,7 @@ describe('jqLite', function() {      it('should emit $destroy event if element removed via remove()', function() {        var log = '';        var element = jqLite(a); -      element.bind('$destroy', function() {log+= 'destroy;';}); +      element.on('$destroy', function() {log+= 'destroy;';});        element.remove();        expect(log).toEqual('destroy;');      }); @@ -276,7 +276,7 @@ describe('jqLite', function() {      it('should emit $destroy event if an element is removed via html()', inject(function(log) {        var element = jqLite('<div><span>x</span></div>'); -      element.find('span').bind('$destroy', log.fn('destroyed')); +      element.find('span').on('$destroy', log.fn('destroyed'));        element.html(''); @@ -343,7 +343,7 @@ describe('jqLite', function() {              span = div.find('span'),              log = ''; -        span.bind('click', function() { log+= 'click;'}); +        span.on('click', function() { log+= 'click;'});          browserTrigger(span);          expect(log).toEqual('click;'); @@ -705,7 +705,7 @@ describe('jqLite', function() {    }); -  describe('bind', function() { +  describe('on', function() {      it('should bind to window on hashchange', function() {        if (jqLite.fn) return; // don't run in jQuery        var eventFn; @@ -727,7 +727,7 @@ describe('jqLite', function() {            detachEvent: noop        };        var log; -      var jWindow = jqLite(window).bind('hashchange', function() { +      var jWindow = jqLite(window).on('hashchange', function() {          log = 'works!';        });        eventFn({type: 'hashchange'}); @@ -739,7 +739,7 @@ describe('jqLite', function() {      it('should bind to all elements and return functions', function() {        var selected = jqLite([a, b]);        var log = ''; -      expect(selected.bind('click', function() { +      expect(selected.on('click', function() {          log += 'click on: ' + jqLite(this).text() + ';';        })).toEqual(selected);        browserTrigger(a, 'click'); @@ -752,8 +752,8 @@ describe('jqLite', function() {        var elm = jqLite(a),            callback = jasmine.createSpy('callback'); -      elm.bind('click keypress', callback); -      elm.bind('click', callback); +      elm.on('click keypress', callback); +      elm.on('click', callback);        browserTrigger(a, 'click');        expect(callback).toHaveBeenCalled(); @@ -767,7 +767,7 @@ describe('jqLite', function() {      it('should set event.target on IE', function() {        var elm = jqLite(a); -      elm.bind('click', function(event) { +      elm.on('click', function(event) {          expect(event.target).toBe(a);        }); @@ -775,7 +775,7 @@ describe('jqLite', function() {      });      it('should have event.isDefaultPrevented method', function() { -      jqLite(a).bind('click', function(e) { +      jqLite(a).on('click', function(e) {          expect(function() {            expect(e.isDefaultPrevented()).toBe(false);            e.preventDefault(); @@ -796,11 +796,11 @@ describe('jqLite', function() {          sibling = root.find('ul');          child = parent.find('span'); -        parent.bind('mouseenter', function() { log += 'parentEnter;'; }); -        parent.bind('mouseleave', function() { log += 'parentLeave;'; }); +        parent.on('mouseenter', function() { log += 'parentEnter;'; }); +        parent.on('mouseleave', function() { log += 'parentLeave;'; }); -        child.bind('mouseenter', function() { log += 'childEnter;'; }); -        child.bind('mouseleave', function() { log += 'childLeave;'; }); +        child.on('mouseenter', function() { log += 'childEnter;'; }); +        child.on('mouseleave', function() { log += 'childLeave;'; });        });        afterEach(function() { @@ -854,6 +854,30 @@ describe('jqLite', function() {        });      }); + +    // Only run this test for jqLite and not normal jQuery +    if ( _jqLiteMode ) { +      it('should throw an error if eventData or a selector is passed', function() { +        var elm = jqLite(a), +            anObj = {}, +            aString = '', +            aValue = 45, +            callback = function() {}; + +        expect(function() { +          elm.on('click', anObj, callback); +        }).toThrow(); + +        expect(function() { +          elm.on('click', null, aString, callback); +        }).toThrow(); + +        expect(function() { +          elm.on('click', aValue, callback); +        }).toThrow(); + +      }); +    }    }); @@ -861,9 +885,9 @@ describe('jqLite', function() {      it('should do nothing when no listener was registered with bound', function() {        var aElem = jqLite(a); -      aElem.unbind(); -      aElem.unbind('click'); -      aElem.unbind('click', function() {}); +      aElem.off(); +      aElem.off('click'); +      aElem.off('click', function() {});      }); @@ -872,8 +896,8 @@ describe('jqLite', function() {            clickSpy = jasmine.createSpy('click'),            mouseoverSpy = jasmine.createSpy('mouseover'); -      aElem.bind('click', clickSpy); -      aElem.bind('mouseover', mouseoverSpy); +      aElem.on('click', clickSpy); +      aElem.on('mouseover', mouseoverSpy);        browserTrigger(a, 'click');        expect(clickSpy).toHaveBeenCalledOnce(); @@ -883,7 +907,7 @@ describe('jqLite', function() {        clickSpy.reset();        mouseoverSpy.reset(); -      aElem.unbind(); +      aElem.off();        browserTrigger(a, 'click');        expect(clickSpy).not.toHaveBeenCalled(); @@ -897,8 +921,8 @@ describe('jqLite', function() {            clickSpy = jasmine.createSpy('click'),            mouseoverSpy = jasmine.createSpy('mouseover'); -      aElem.bind('click', clickSpy); -      aElem.bind('mouseover', mouseoverSpy); +      aElem.on('click', clickSpy); +      aElem.on('mouseover', mouseoverSpy);        browserTrigger(a, 'click');        expect(clickSpy).toHaveBeenCalledOnce(); @@ -908,7 +932,7 @@ describe('jqLite', function() {        clickSpy.reset();        mouseoverSpy.reset(); -      aElem.unbind('click'); +      aElem.off('click');        browserTrigger(a, 'click');        expect(clickSpy).not.toHaveBeenCalled(); @@ -917,7 +941,7 @@ describe('jqLite', function() {        mouseoverSpy.reset(); -      aElem.unbind('mouseover'); +      aElem.off('mouseover');        browserTrigger(a, 'mouseover');        expect(mouseoverSpy).not.toHaveBeenCalled();      }); @@ -928,8 +952,8 @@ describe('jqLite', function() {            clickSpy1 = jasmine.createSpy('click1'),            clickSpy2 = jasmine.createSpy('click2'); -      aElem.bind('click', clickSpy1); -      aElem.bind('click', clickSpy2); +      aElem.on('click', clickSpy1); +      aElem.on('click', clickSpy2);        browserTrigger(a, 'click');        expect(clickSpy1).toHaveBeenCalledOnce(); @@ -938,7 +962,7 @@ describe('jqLite', function() {        clickSpy1.reset();        clickSpy2.reset(); -      aElem.unbind('click', clickSpy1); +      aElem.off('click', clickSpy1);        browserTrigger(a, 'click');        expect(clickSpy1).not.toHaveBeenCalled(); @@ -946,7 +970,7 @@ describe('jqLite', function() {        clickSpy2.reset(); -      aElem.unbind('click', clickSpy2); +      aElem.off('click', clickSpy2);        browserTrigger(a, 'click');        expect(clickSpy2).not.toHaveBeenCalled();      }); @@ -1159,9 +1183,9 @@ describe('jqLite', function() {            clickSpy1 = jasmine.createSpy('clickSpy1'),            clickSpy2 = jasmine.createSpy('clickSpy2'); -      element.bind('poke', pokeSpy); -      element.bind('click', clickSpy1); -      element.bind('click', clickSpy2); +      element.on('poke', pokeSpy); +      element.on('click', clickSpy1); +      element.on('click', clickSpy2);        expect(pokeSpy).not.toHaveBeenCalled();        expect(clickSpy1).not.toHaveBeenCalled(); @@ -1185,7 +1209,7 @@ describe('jqLite', function() {            pokeSpy = jasmine.createSpy('poke'),            event; -      element.bind('click', pokeSpy); +      element.on('click', pokeSpy);        element.triggerHandler('click');        event = pokeSpy.mostRecentCall.args[0]; | 
