diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/jqLiteSpec.js | 30 | ||||
| -rw-r--r-- | test/ngMock/angular-mocksSpec.js | 40 | ||||
| -rw-r--r-- | test/testabilityPatch.js | 1 | 
3 files changed, 68 insertions, 3 deletions
diff --git a/test/jqLiteSpec.js b/test/jqLiteSpec.js index f159e08f..406b7a5a 100644 --- a/test/jqLiteSpec.js +++ b/test/jqLiteSpec.js @@ -291,11 +291,37 @@ describe('jqLite', function() {        expect(element.data()).toEqual({meLike: 'turtles', youLike: 'carrots', existing: 'val'});        expect(element.data()).toBe(oldData); // merge into the old object      }); + +    describe('data cleanup', function() { +      it('should remove data on element removal', function() { +        var div = jqLite('<div><span>text</span></div>'), +            span = div.find('span'); + +        span.data('name', 'angular'); +        span.remove(); +        expect(span.data('name')).toBeUndefined(); +      }); + +      it('should remove event listeners on element removal', function() { +        var div = jqLite('<div><span>text</span></div>'), +            span = div.find('span'), +            log = ''; + +        span.bind('click', function() { log+= 'click;'}); +        browserTrigger(span); +        expect(log).toEqual('click;'); + +        span.remove(); + +        browserTrigger(span); +        expect(log).toEqual('click;'); +      }); +    });    });    describe('attr', function() { -    it('shoul read write and remove attr', function() { +    it('should read write and remove attr', function() {        var selector = jqLite([a, b]);        expect(selector.attr('prop', 'value')).toEqual(selector); @@ -667,7 +693,7 @@ describe('jqLite', function() {        var jWindow = jqLite(window).bind('hashchange', function() {          log = 'works!';        }); -      eventFn({}); +      eventFn({type: 'hashchange'});        expect(log).toEqual('works!');        dealoc(jWindow);      }); diff --git a/test/ngMock/angular-mocksSpec.js b/test/ngMock/angular-mocksSpec.js index 22c91a4d..88946ab9 100644 --- a/test/ngMock/angular-mocksSpec.js +++ b/test/ngMock/angular-mocksSpec.js @@ -148,6 +148,7 @@ describe('ngMock', function() {      });    }); +    describe('$log', function() {      var $log;      beforeEach(inject(['$log', function(log) { @@ -229,6 +230,7 @@ describe('ngMock', function() {      });    }); +    describe('defer', function() {      var browser, log;      beforeEach(inject(function($browser) { @@ -341,6 +343,44 @@ describe('ngMock', function() {      });    }); + +  describe('angular.mock.clearDataCache', function() { +    function keys(obj) { +      var keys = []; +      for(var key in obj) { +        if (obj.hasOwnProperty(key)) keys.push(key); +      } +      return keys.sort(); +    } + +    it('should remove data', function() { +      expect(angular.element.cache).toEqual({}); +      var div = angular.element('<div></div>'); +      div.data('name', 'angular'); +      expect(keys(angular.element.cache)).not.toEqual([]); +      angular.mock.clearDataCache(); +      expect(keys(angular.element.cache)).toEqual([]); +    }); + +    it('should deregister event handlers', function() { +      expect(keys(angular.element.cache)).toEqual([]); + +      var div = angular.element('<div></div>'); + +      div.bind('click', angular.noop); +      div.bind('mousemove', angular.noop); +      div.data('some', 'data'); +      expect(keys(angular.element.cache).length).toBe(1); + +      angular.mock.clearDataCache(); +      expect(keys(angular.element.cache)).toEqual([]); +      expect(div.data('some')).toBeUndefined(); + +      div.remove(); +    }); +  }); + +    describe('jasmine module and inject', function(){      var log; diff --git a/test/testabilityPatch.js b/test/testabilityPatch.js index 12724192..f033dda2 100644 --- a/test/testabilityPatch.js +++ b/test/testabilityPatch.js @@ -42,7 +42,6 @@ afterEach(function() {    var count = 0;    forEachSorted(jqCache, function(value, key){      count ++; -    delete jqCache[key];      forEach(value, function(value, key){        if (value.$element) {          dump('LEAK', key, value.$id, sortedHtml(value.$element));  | 
