OLD | NEW |
1 library ng_switch_spec; | 1 library ng_switch_spec; |
2 | 2 |
3 import '../_specs.dart'; | 3 import '../_specs.dart'; |
4 | 4 |
5 main() => describe('ngSwitch', () { | 5 void main() { |
6 TestBed _; | 6 describe('ngSwitch', () { |
7 | 7 TestBed _; |
8 beforeEach(inject((TestBed tb) => _ = tb)); | 8 |
9 | 9 beforeEach((TestBed tb) => _ = tb); |
10 it('should switch on value change', inject(() { | 10 |
11 var element = _.compile( | 11 it('should switch on value change', () { |
12 '<div ng-switch="select">' + | 12 var element = _.compile( |
13 '<div ng-switch-when="1">first:{{name}}</div>' + | 13 '<div ng-switch="select">' + |
14 '<div ng-switch-when="2">second:{{name}}</div>' + | 14 '<div ng-switch-when="1">first:{{name}}</div>' + |
15 '<div ng-switch-when="true">true:{{name}}</div>' + | 15 '<div ng-switch-when="2">second:{{name}}</div>' + |
16 '</div>'); | 16 '<div ng-switch-when="true">true:{{name}}</div>' + |
17 expect(element.innerHtml).toEqual( | 17 '</div>'); |
18 '<!--ANCHOR: [ng-switch-when]=1--><!--ANCHOR: [ng-switch-when]=2--><!--A
NCHOR: [ng-switch-when]=true-->'); | 18 expect(element.innerHtml).toEqual( |
19 _.rootScope.context['select'] = 1; | 19 '<!--ANCHOR: [ng-switch-when]=1--><!--ANCHOR: [ng-switch-when]=2--><!-
-ANCHOR: [ng-switch-when]=true-->'); |
20 _.rootScope.apply(); | 20 _.rootScope.context['select'] = 1; |
21 expect(element.text).toEqual('first:'); | 21 _.rootScope.apply(); |
22 _.rootScope.context['name'] = "shyam"; | 22 expect(element.text).toEqual('first:'); |
23 _.rootScope.apply(); | 23 _.rootScope.context['name'] = "shyam"; |
24 expect(element.text).toEqual('first:shyam'); | 24 _.rootScope.apply(); |
25 _.rootScope.context['select'] = 2; | 25 expect(element.text).toEqual('first:shyam'); |
26 _.rootScope.apply(); | 26 _.rootScope.context['select'] = 2; |
27 expect(element.text).toEqual('second:shyam'); | 27 _.rootScope.apply(); |
28 _.rootScope.context['name'] = 'misko'; | 28 expect(element.text).toEqual('second:shyam'); |
29 _.rootScope.apply(); | 29 _.rootScope.context['name'] = 'misko'; |
30 expect(element.text).toEqual('second:misko'); | 30 _.rootScope.apply(); |
31 _.rootScope.context['select'] = true; | 31 expect(element.text).toEqual('second:misko'); |
32 _.rootScope.apply(); | 32 _.rootScope.context['select'] = true; |
33 expect(element.text).toEqual('true:misko'); | 33 _.rootScope.apply(); |
34 })); | 34 expect(element.text).toEqual('true:misko'); |
35 | 35 }); |
36 | 36 |
37 it('should show all switch-whens that match the current value', inject(() { | 37 |
38 var element = _.compile( | 38 it('should show all switch-whens that match the current value', () { |
39 '<ul ng-switch="select">' + | 39 var element = _.compile( |
40 '<li ng-switch-when="1">first:{{name}}</li>' + | 40 '<ul ng-switch="select">' + |
41 '<li ng-switch-when="1">, first too:{{name}}</li>' + | 41 '<li ng-switch-when="1">first:{{name}}</li>' + |
42 '<li ng-switch-when="2">second:{{name}}</li>' + | 42 '<li ng-switch-when="1">, first too:{{name}}</li>' + |
43 '<li ng-switch-when="true">true:{{name}}</li>' + | 43 '<li ng-switch-when="2">second:{{name}}</li>' + |
44 '</ul>'); | 44 '<li ng-switch-when="true">true:{{name}}</li>' + |
45 expect(element.innerHtml).toEqual('<!--ANCHOR: [ng-switch-when]=1-->' | 45 '</ul>'); |
46 '<!--ANCHOR: [ng-switch-when]=1-->' | 46 expect(element.innerHtml).toEqual('<!--ANCHOR: [ng-switch-when]=1-->' |
47 '<!--ANCHOR: [ng-switch-when]=2-->' | 47 '<!--ANCHOR: [ng-switch-when]=1-->' |
48 '<!--ANCHOR: [ng-switch-when]=true-->'); | 48 '<!--ANCHOR: [ng-switch-when]=2-->' |
49 _.rootScope.context['select'] = 1; | 49 '<!--ANCHOR: [ng-switch-when]=true-->'); |
50 _.rootScope.apply(); | 50 _.rootScope.context['select'] = 1; |
51 expect(element.text).toEqual('first:, first too:'); | 51 _.rootScope.apply(); |
52 _.rootScope.context['name'] = "shyam"; | 52 expect(element.text).toEqual('first:, first too:'); |
53 _.rootScope.apply(); | 53 _.rootScope.context['name'] = "shyam"; |
54 expect(element.text).toEqual('first:shyam, first too:shyam'); | 54 _.rootScope.apply(); |
55 _.rootScope.context['select'] = 2; | 55 expect(element.text).toEqual('first:shyam, first too:shyam'); |
56 _.rootScope.apply(); | 56 _.rootScope.context['select'] = 2; |
57 expect(element.text).toEqual('second:shyam'); | 57 _.rootScope.apply(); |
58 _.rootScope.context['name'] = 'misko'; | 58 expect(element.text).toEqual('second:shyam'); |
59 _.rootScope.apply(); | 59 _.rootScope.context['name'] = 'misko'; |
60 expect(element.text).toEqual('second:misko'); | 60 _.rootScope.apply(); |
61 _.rootScope.context['select'] = true; | 61 expect(element.text).toEqual('second:misko'); |
62 _.rootScope.apply(); | 62 _.rootScope.context['select'] = true; |
63 expect(element.text).toEqual('true:misko'); | 63 _.rootScope.apply(); |
64 })); | 64 expect(element.text).toEqual('true:misko'); |
65 | 65 }); |
66 | 66 |
67 it('should switch on switch-when-default', inject(() { | 67 |
68 var element = _.compile( | 68 it('should switch on switch-when-default', () { |
69 '<div ng-switch="select">' + | 69 var element = _.compile( |
70 '<div ng-switch-when="1">one</div>' + | 70 '<div ng-switch="select">' + |
71 '<div ng-switch-default>other</div>' + | 71 '<div ng-switch-when="1">one</div>' + |
72 '</div ng-switch>'); | 72 '<div ng-switch-default>other</div>' + |
73 _.rootScope.apply(); | 73 '</div ng-switch>'); |
74 expect(element.text).toEqual('other'); | 74 _.rootScope.apply(); |
75 _.rootScope.context['select'] = 1; | 75 expect(element.text).toEqual('other'); |
76 _.rootScope.apply(); | 76 _.rootScope.context['select'] = 1; |
77 expect(element.text).toEqual('one'); | 77 _.rootScope.apply(); |
78 })); | 78 expect(element.text).toEqual('one'); |
79 | 79 }); |
80 | 80 |
81 it('should show all switch-when-default', inject(() { | 81 |
82 var element = _.compile( | 82 it('should show all switch-when-default', () { |
83 '<ul ng-switch="select">' + | 83 var element = _.compile( |
84 '<li ng-switch-when="1">one</li>' + | 84 '<ul ng-switch="select">' + |
85 '<li ng-switch-default>other</li>' + | 85 '<li ng-switch-when="1">one</li>' + |
86 '<li ng-switch-default>, other too</li>' + | 86 '<li ng-switch-default>other</li>' + |
87 '</ul>'); | 87 '<li ng-switch-default>, other too</li>' + |
88 _.rootScope.apply(); | 88 '</ul>'); |
89 expect(element.text).toEqual('other, other too'); | 89 _.rootScope.apply(); |
90 _.rootScope.context['select'] = 1; | 90 expect(element.text).toEqual('other, other too'); |
91 _.rootScope.apply(); | 91 _.rootScope.context['select'] = 1; |
92 expect(element.text).toEqual('one'); | 92 _.rootScope.apply(); |
93 })); | 93 expect(element.text).toEqual('one'); |
94 | 94 }); |
95 | 95 |
96 it('should always display the elements that do not match a switch', | 96 |
97 inject(() { | 97 it('should always display the elements that do not match a switch', |
98 var element = _.compile( | 98 inject(() { |
99 '<ul ng-switch="select">' + | 99 var element = _.compile( |
100 '<li>always </li>' + | 100 '<ul ng-switch="select">' + |
101 '<li ng-switch-when="1">one </li>' + | 101 '<li>always </li>' + |
102 '<li ng-switch-when="2">two </li>' + | 102 '<li ng-switch-when="1">one </li>' + |
103 '<li ng-switch-default>other, </li>' + | 103 '<li ng-switch-when="2">two </li>' + |
104 '<li ng-switch-default>other too </li>' + | 104 '<li ng-switch-default>other, </li>' + |
105 '</ul>'); | 105 '<li ng-switch-default>other too </li>' + |
106 _.rootScope.apply(); | 106 '</ul>'); |
107 expect(element.text).toEqual('always other, other too '); | 107 _.rootScope.apply(); |
108 _.rootScope.context['select'] = 1; | 108 expect(element.text).toEqual('always other, other too '); |
109 _.rootScope.apply(); | 109 _.rootScope.context['select'] = 1; |
110 expect(element.text).toEqual('always one '); | 110 _.rootScope.apply(); |
111 })); | 111 expect(element.text).toEqual('always one '); |
112 | 112 })); |
113 | 113 |
114 it('should display the elements that do not have ngSwitchWhen nor ' + | 114 |
115 'ngSwitchDefault at the position specified in the template, when the ' + | 115 it('should display the elements that do not have ngSwitchWhen nor ' + |
116 'first and last elements in the ngSwitch body do not have a ngSwitch* ' + | 116 'ngSwitchDefault at the position specified in the template, when the ' + |
117 'directive', inject(() { | 117 'first and last elements in the ngSwitch body do not have a ngSwitch* ' + |
118 var element = _.compile( | 118 'directive', () { |
119 '<ul ng-switch="select">' + | 119 var element = _.compile( |
120 '<li>1</li>' + | 120 '<ul ng-switch="select">' + |
121 '<li ng-switch-when="1">2</li>' + | 121 '<li>1</li>' + |
122 '<li>3</li>' + | 122 '<li ng-switch-when="1">2</li>' + |
123 '<li ng-switch-when="2">4</li>' + | 123 '<li>3</li>' + |
124 '<li ng-switch-default>5</li>' + | 124 '<li ng-switch-when="2">4</li>' + |
125 '<li>6</li>' + | 125 '<li ng-switch-default>5</li>' + |
126 '<li ng-switch-default>7</li>' + | 126 '<li>6</li>' + |
127 '<li>8</li>' + | 127 '<li ng-switch-default>7</li>' + |
128 '</ul>'); | 128 '<li>8</li>' + |
129 _.rootScope.apply(); | 129 '</ul>'); |
130 expect(element.text).toEqual('135678'); | 130 _.rootScope.apply(); |
131 _.rootScope.context['select'] = 1; | 131 expect(element.text).toEqual('135678'); |
132 _.rootScope.apply(); | 132 _.rootScope.context['select'] = 1; |
133 expect(element.text).toEqual('12368'); | 133 _.rootScope.apply(); |
134 })); | 134 expect(element.text).toEqual('12368'); |
135 | 135 }); |
136 | 136 |
137 it('should display the elements that do not have ngSwitchWhen nor ' + | 137 |
138 'ngSwitchDefault at the position specified in the template when the ' + | 138 it('should display the elements that do not have ngSwitchWhen nor ' + |
139 'first and last elements in the ngSwitch have a ngSwitch* directive', | 139 'ngSwitchDefault at the position specified in the template when the ' + |
140 inject(() { | 140 'first and last elements in the ngSwitch have a ngSwitch* directive', |
141 var element = _.compile( | 141 inject(() { |
142 '<ul ng-switch="select">' + | 142 var element = _.compile( |
143 '<li ng-switch-when="1">2</li>' + | 143 '<ul ng-switch="select">' + |
144 '<li>3</li>' + | 144 '<li ng-switch-when="1">2</li>' + |
145 '<li ng-switch-when="2">4</li>' + | 145 '<li>3</li>' + |
146 '<li ng-switch-default>5</li>' + | 146 '<li ng-switch-when="2">4</li>' + |
147 '<li>6</li>' + | 147 '<li ng-switch-default>5</li>' + |
148 '<li ng-switch-default>7</li>' + | 148 '<li>6</li>' + |
149 '</ul>'); | 149 '<li ng-switch-default>7</li>' + |
150 _.rootScope.apply(); | 150 '</ul>'); |
151 expect(element.text).toEqual('3567'); | 151 _.rootScope.apply(); |
152 _.rootScope.context['select'] = 1; | 152 expect(element.text).toEqual('3567'); |
153 _.rootScope.apply(); | 153 _.rootScope.context['select'] = 1; |
154 expect(element.text).toEqual('236'); | 154 _.rootScope.apply(); |
155 })); | 155 expect(element.text).toEqual('236'); |
156 | 156 })); |
157 | 157 |
158 it('should call change on switch', inject(() { | 158 |
159 var element = _.compile( | 159 it('should call change on switch', () { |
160 '<div ng-switch="url" change="name=\'works\'">' + | 160 var element = _.compile( |
161 '<div ng-switch-when="a">{{name}}</div>' + | 161 '<div ng-switch="url" change="name=\'works\'">' + |
162 '</div ng-switch>'); | 162 '<div ng-switch-when="a">{{name}}</div>' + |
163 _.rootScope.context['url'] = 'a'; | 163 '</div ng-switch>'); |
164 _.rootScope.apply(); | 164 _.rootScope.context['url'] = 'a'; |
165 expect(_.rootScope.context['name']).toEqual('works'); | 165 _.rootScope.apply(); |
166 expect(element.text).toEqual('works'); | 166 expect(_.rootScope.context['name']).toEqual('works'); |
167 })); | 167 expect(element.text).toEqual('works'); |
168 | 168 }); |
169 | 169 |
170 it('should properly create and destroy child scopes', inject(() { | 170 |
171 var element = _.compile( | 171 it('should properly create and destroy child scopes', () { |
172 '<div ng-switch="url">' + | 172 var element = _.compile( |
173 '<div ng-switch-when="a" probe="probe">{{name}}</div>' + | 173 '<div ng-switch="url">' + |
174 '</div ng-switch>'); | 174 '<div ng-switch-when="a" probe="probe">{{name}}</div>' + |
175 _.rootScope.apply(); | 175 '</div ng-switch>'); |
176 | 176 _.rootScope.apply(); |
177 var getChildScope = () => _.rootScope.context['probe'] == null ? | 177 |
178 null : _.rootScope.context['probe'].scope; | 178 var getChildScope = () => _.rootScope.context['probe'] == null ? |
179 | 179 null : _.rootScope.context['probe'].scope; |
180 expect(getChildScope()).toBeNull(); | 180 |
181 | 181 expect(getChildScope()).toBeNull(); |
182 _.rootScope.context['url'] = 'a'; | 182 |
183 _.rootScope.context['name'] = 'works'; | 183 _.rootScope.context['url'] = 'a'; |
184 _.rootScope.apply(); | 184 _.rootScope.context['name'] = 'works'; |
185 var child1 = getChildScope(); | 185 _.rootScope.apply(); |
186 expect(child1).toBeNotNull(); | 186 var child1 = getChildScope(); |
187 expect(element.text).toEqual('works'); | 187 expect(child1).toBeNotNull(); |
188 var destroyListener = jasmine.createSpy('watch listener'); | 188 expect(element.text).toEqual('works'); |
189 var watcher = child1.on(ScopeEvent.DESTROY).listen(destroyListener); | 189 var destroyListener = jasmine.createSpy('watch listener'); |
190 | 190 var watcher = child1.on(ScopeEvent.DESTROY).listen(destroyListener); |
191 _.rootScope.context['url'] = 'x'; | 191 |
192 _.rootScope.apply(); | 192 _.rootScope.context['url'] = 'x'; |
193 expect(getChildScope()).toBeNull(); | 193 _.rootScope.apply(); |
194 expect(destroyListener).toHaveBeenCalledOnce(); | 194 expect(getChildScope()).toBeNull(); |
195 watcher.cancel(); | 195 expect(destroyListener).toHaveBeenCalledOnce(); |
196 | 196 watcher.cancel(); |
197 _.rootScope.context['url'] = 'a'; | 197 |
198 _.rootScope.apply(); | 198 _.rootScope.context['url'] = 'a'; |
199 var child2 = getChildScope(); | 199 _.rootScope.apply(); |
200 expect(child2).toBeDefined(); | 200 var child2 = getChildScope(); |
201 expect(child2).not.toBe(child1); | 201 expect(child2).toBeDefined(); |
202 })); | 202 expect(child2).not.toBe(child1); |
203 }); | 203 }); |
| 204 }); |
| 205 } |
OLD | NEW |