diff options
| author | Lucas Galfasó | 2013-03-03 22:23:29 -0300 |
|---|---|---|
| committer | James deBoer | 2013-03-11 11:31:04 -0700 |
| commit | e88d6179c3a6a137e75fa09de906fc83c6515db2 (patch) | |
| tree | bee7a8a3cb8a4cbcd6304baf456233a66f4f15d6 /test/ng/directive/ngSwitchSpec.js | |
| parent | 90ba9aadc6693e01487e6e14e7d1065658572e0f (diff) | |
| download | angular.js-e88d6179c3a6a137e75fa09de906fc83c6515db2.tar.bz2 | |
feat(ng:switch): Preserve the order of the elements not in the ng-switch
Preserve the order of the elements that are not part of a case nor default in
a ng-switch directive
BREAKING CHANGE: elements not in the ng-switch were rendered after the
ng-switch elements. Now they are rendered in-place.
Ng-switch directives should be updated with non ng-switch elements
in render-order. e.g.
The following was previously rendered with <li>1</li> after "2":
<ul ng-switch="select">
<li>1</li>
<li ng-switch-when="option">2</li>
</ul>
To keep the old behaviour, say:
<ul ng-switch="select">
<li ng-switch-when="1">2</li>
<li>1</li>
</ul>
Closes #1074
Diffstat (limited to 'test/ng/directive/ngSwitchSpec.js')
| -rw-r--r-- | test/ng/directive/ngSwitchSpec.js | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/test/ng/directive/ngSwitchSpec.js b/test/ng/directive/ngSwitchSpec.js index b817386c..85240b19 100644 --- a/test/ng/directive/ngSwitchSpec.js +++ b/test/ng/directive/ngSwitchSpec.js @@ -95,6 +95,68 @@ describe('ngSwitch', function() { })); + it('should always display the elements that do not match a switch', + inject(function($rootScope, $compile) { + element = $compile( + '<ul ng-switch="select">' + + '<li>always </li>' + + '<li ng-switch-when="1">one </li>' + + '<li ng-switch-when="2">two </li>' + + '<li ng-switch-default>other, </li>' + + '<li ng-switch-default>other too </li>' + + '</ul>')($rootScope); + $rootScope.$apply(); + expect(element.text()).toEqual('always other, other too '); + $rootScope.select = 1; + $rootScope.$apply(); + expect(element.text()).toEqual('always one '); + })); + + + it('should display the elements that do not have ngSwitchWhen nor ' + + 'ngSwitchDefault at the position specified in the template, when the ' + + 'first and last elements in the ngSwitch body do not have a ngSwitch* ' + + 'directive', inject(function($rootScope, $compile) { + element = $compile( + '<ul ng-switch="select">' + + '<li>1</li>' + + '<li ng-switch-when="1">2</li>' + + '<li>3</li>' + + '<li ng-switch-when="2">4</li>' + + '<li ng-switch-default>5</li>' + + '<li>6</li>' + + '<li ng-switch-default>7</li>' + + '<li>8</li>' + + '</ul>')($rootScope); + $rootScope.$apply(); + expect(element.text()).toEqual('135678'); + $rootScope.select = 1; + $rootScope.$apply(); + expect(element.text()).toEqual('12368'); + })); + + + it('should display the elements that do not have ngSwitchWhen nor ' + + 'ngSwitchDefault at the position specified in the template when the ' + + 'first and last elements in the ngSwitch have a ngSwitch* directive', + inject(function($rootScope, $compile) { + element = $compile( + '<ul ng-switch="select">' + + '<li ng-switch-when="1">2</li>' + + '<li>3</li>' + + '<li ng-switch-when="2">4</li>' + + '<li ng-switch-default>5</li>' + + '<li>6</li>' + + '<li ng-switch-default>7</li>' + + '</ul>')($rootScope); + $rootScope.$apply(); + expect(element.text()).toEqual('3567'); + $rootScope.select = 1; + $rootScope.$apply(); + expect(element.text()).toEqual('236'); + })); + + it('should call change on switch', inject(function($rootScope, $compile) { element = $compile( '<ng:switch on="url" change="name=\'works\'">' + |
