diff options
| author | Igor Minar | 2012-03-14 13:03:53 -0700 | 
|---|---|---|
| committer | Igor Minar | 2012-03-14 14:33:20 -0700 | 
| commit | 2315d9b3610994b36c44e4a97fb1427d59471ce8 (patch) | |
| tree | b8ac9c4204da71ab29e21eebe63af20f0ca6eccb /test/directive/ngSwitchSpec.js | |
| parent | 8fd1b748721a6312c9d4340744a012143e4d5ef2 (diff) | |
| download | angular.js-2315d9b3610994b36c44e4a97fb1427d59471ce8.tar.bz2 | |
fix(ng-switch): properly destroy child scopes
Diffstat (limited to 'test/directive/ngSwitchSpec.js')
| -rw-r--r-- | test/directive/ngSwitchSpec.js | 30 | 
1 files changed, 30 insertions, 0 deletions
diff --git a/test/directive/ngSwitchSpec.js b/test/directive/ngSwitchSpec.js index c61dd60d..b0dd7493 100644 --- a/test/directive/ngSwitchSpec.js +++ b/test/directive/ngSwitchSpec.js @@ -60,4 +60,34 @@ describe('ng-switch', function() {      expect($rootScope.name).toEqual('works');      expect(element.text()).toEqual('works');    })); + + +  it('should properly create and destory child scopes', inject(function($rootScope, $compile) { +    element = $compile( +      '<ng:switch on="url">' + +        '<div ng-switch-when="a">{{name}}</div>' + +      '</ng:switch>')($rootScope); +    $rootScope.$apply(); + +    var getChildScope = function() { return element.find('div').scope(); }; + +    expect(getChildScope()).toBeUndefined(); + +    $rootScope.url = 'a'; +    $rootScope.$apply(); +    var child1 = getChildScope(); +    expect(child1).toBeDefined(); +    spyOn(child1, '$destroy'); + +    $rootScope.url = 'x'; +    $rootScope.$apply(); +    expect(getChildScope()).toBeUndefined(); +    expect(child1.$destroy).toHaveBeenCalledOnce(); + +    $rootScope.url = 'a'; +    $rootScope.$apply(); +    var child2 = getChildScope(); +    expect(child2).toBeDefined(); +    expect(child2).not.toBe(child1); +  }));  });  | 
