Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(67)

Side by Side Diff: third_party/pkg/angular/test/directive/ng_form_spec.dart

Issue 148453003: Updating Angular version (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 library form_spec; 1 library form_spec;
2 2
3 import '../_specs.dart'; 3 import '../_specs.dart';
4 4
5 main() => 5 main() =>
6 describe('form', () { 6 describe('form', () {
7 TestBed _; 7 TestBed _;
8 8
9 beforeEach(inject((TestBed tb) => _ = tb)); 9 beforeEach(inject((TestBed tb) => _ = tb));
10 10
11 it('should suppress the submission event if no action is provided within the f orm', inject((Scope scope) { 11 it('should set the name of the form and attach it to the scope', inject((Scope scope) {
12 var element = $('<form name="myForm"></form>'); 12 var element = $('<form name="myForm"></form>');
13 13
14 expect(scope['myForm']).toBeNull();
15
14 _.compile(element); 16 _.compile(element);
15 scope.$apply(); 17 scope.$apply();
16 18
17 Event submissionEvent = new Event.eventType('CustomEvent', 'submit'); 19 expect(scope['myForm']).toBeDefined();
18 20
19 expect(submissionEvent.defaultPrevented).toBe(false); 21 var form = scope['myForm'];
20 element[0].dispatchEvent(submissionEvent); 22 expect(form.name).toEqual('myForm');
21 expect(submissionEvent.defaultPrevented).toBe(true);
22
23 Event fakeEvent = new Event.eventType('CustomEvent', 'running');
24
25 expect(fakeEvent.defaultPrevented).toBe(false);
26 element[0].dispatchEvent(submissionEvent);
27 expect(fakeEvent.defaultPrevented).toBe(false);
28 })); 23 }));
29 24
30 it('should not prevent the submission event if an action is defined', inject(( Scope scope) { 25 describe('pristine / dirty', () {
31 var element = $('<form name="myForm" action="..."></form>'); 26 it('should be set to pristine by default', inject((Scope scope) {
32 27 var element = $('<form name="myForm"></form>');
33 _.compile(element); 28
34 scope.$apply(); 29 _.compile(element);
35 30 scope.$apply();
36 Event submissionEvent = new Event.eventType('CustomEvent', 'submit'); 31
37 32 var form = scope['myForm'];
38 expect(submissionEvent.defaultPrevented).toBe(false); 33 expect(form.pristine).toEqual(true);
39 element[0].dispatchEvent(submissionEvent); 34 expect(form.dirty).toEqual(false);
40 expect(submissionEvent.defaultPrevented).toBe(false); 35 }));
41 })); 36
42 37 it('should add and remove the correct CSS classes when set to dirty and to p ristine', inject((Scope scope) {
43 it('should execute the ng-submit expression if provided upon form submission', inject((Scope scope) { 38 var element = $('<form name="myForm"></form>');
44 var element = $('<form name="myForm" ng-submit="submitted = true"></form>'); 39
45 40 _.compile(element);
46 _.compile(element); 41 scope.$apply();
47 scope.$apply(); 42
48 43 var form = scope['myForm'];
49 _.rootScope.submitted = false; 44
50 45 form.dirty = true;
51 Event submissionEvent = new Event.eventType('CustomEvent', 'submit'); 46 expect(form.pristine).toEqual(false);
52 element[0].dispatchEvent(submissionEvent); 47 expect(form.dirty).toEqual(true);
53 48 expect(element.hasClass('ng-pristine')).toBe(false);
54 expect(_.rootScope.submitted).toBe(true); 49 expect(element.hasClass('ng-dirty')).toBe(true);
55 })); 50
51 form.pristine = true;
52 expect(form.pristine).toEqual(true);
53 expect(form.dirty).toEqual(false);
54 expect(element.hasClass('ng-pristine')).toBe(true);
55 expect(element.hasClass('ng-dirty')).toBe(false);
56 }));
57 });
58
59 describe('valid / invalid', () {
60 it('should add and remove the correct flags when set to valid and to invalid ', inject((Scope scope) {
61 var element = $('<form name="myForm"></form>');
62
63 _.compile(element);
64 scope.$apply();
65
66 var form = scope['myForm'];
67
68 form.invalid = true;
69 expect(form.valid).toEqual(false);
70 expect(form.invalid).toEqual(true);
71 expect(element.hasClass('ng-valid')).toBe(false);
72 expect(element.hasClass('ng-invalid')).toBe(true);
73
74 form.valid = true;
75 expect(form.valid).toEqual(true);
76 expect(form.invalid).toEqual(false);
77 expect(element.hasClass('ng-invalid')).toBe(false);
78 expect(element.hasClass('ng-valid')).toBe(true);
79 }));
80
81 it('should set the validity with respect to all existing validations when se tValidity() is used', inject((Scope scope) {
82 var element = $('<form name="myForm">' +
83 ' <input type="text" ng-model="one" name="one" />' +
84 ' <input type="text" ng-model="two" name="two" />' +
85 ' <input type="text" ng-model="three" name="three" />' +
86 '</form>');
87
88 _.compile(element);
89 scope.$apply();
90
91 var form = scope['myForm'];
92 NgModel one = form['one'];
93 NgModel two = form['two'];
94 NgModel three = form['three'];
95
96 form.setValidity(one, "some error", false);
97 expect(form.valid).toBe(false);
98 expect(form.invalid).toBe(true);
99
100 form.setValidity(two, "some error", false);
101 expect(form.valid).toBe(false);
102 expect(form.invalid).toBe(true);
103
104 form.setValidity(one, "some error", true);
105 expect(form.valid).toBe(false);
106 expect(form.invalid).toBe(true);
107
108 form.setValidity(two, "some error", true);
109 expect(form.valid).toBe(true);
110 expect(form.invalid).toBe(false);
111 }));
112
113 it('should not handle the control + errorType pair more than once', inject(( Scope scope) {
114 var element = $('<form name="myForm">' +
115 ' <input type="text" ng-model="one" name="one" />' +
116 '</form>');
117
118 _.compile(element);
119 scope.$apply();
120
121 var form = scope['myForm'];
122 NgModel one = form['one'];
123
124 form.setValidity(one, "validation error", false);
125 expect(form.valid).toBe(false);
126 expect(form.invalid).toBe(true);
127
128 form.setValidity(one, "validation error", false);
129 expect(form.valid).toBe(false);
130 expect(form.invalid).toBe(true);
131
132 form.setValidity(one, "validation error", true);
133 expect(form.valid).toBe(true);
134 expect(form.invalid).toBe(false);
135 }));
136
137 it('should update the validity of the parent form when the inner model chang es', inject((Scope scope) {
138 var element = $('<form name="myForm">' +
139 ' <input type="text" ng-model="one" name="one" />' +
140 ' <input type="text" ng-model="two" name="two" />' +
141 '</form>');
142
143 _.compile(element);
144 scope.$apply();
145
146 var form = scope['myForm'];
147 NgModel one = form['one'];
148 NgModel two = form['two'];
149
150 one.setValidity("required", false);
151 expect(form.valid).toBe(false);
152 expect(form.invalid).toBe(true);
153
154 two.setValidity("required", false);
155 expect(form.valid).toBe(false);
156 expect(form.invalid).toBe(true);
157
158 one.setValidity("required", true);
159 expect(form.valid).toBe(false);
160 expect(form.invalid).toBe(true);
161
162 two.setValidity("required", true);
163 expect(form.valid).toBe(true);
164 expect(form.invalid).toBe(false);
165 }));
166
167 it('should set the validity for the parent form when fieldsets are used', in ject((Scope scope) {
168 var element = $('<form name="myForm">' +
169 ' <fieldset probe="f">' +
170 ' <input type="text" ng-model="one" name="one" probe="m " />' +
171 ' </fieldset>' +
172 '</form>');
173
174 _.compile(element);
175 scope.$apply();
176
177 var form = scope['myForm'];
178 var fieldset = _.rootScope.f.directive(NgForm);
179 var model = _.rootScope.m.directive(NgModel);
180
181 model.setValidity("error", false);
182
183 expect(model.valid).toBe(false);
184 expect(fieldset.valid).toBe(false);
185 expect(form.valid).toBe(false);
186
187 model.setValidity("error", true);
188
189 expect(model.valid).toBe(true);
190 expect(fieldset.valid).toBe(true);
191 expect(form.valid).toBe(true);
192
193 form.setValidity(fieldset, "error", false);
194 expect(model.valid).toBe(true);
195 expect(fieldset.valid).toBe(true);
196 expect(form.valid).toBe(false);
197
198 fieldset.setValidity(model, "error", false);
199 expect(model.valid).toBe(true);
200 expect(fieldset.valid).toBe(false);
201 expect(form.valid).toBe(false);
202 }));
203 });
204
205 describe('controls', () {
206 it('should add each contained ng-model as a control upon compile', inject((S cope scope) {
207 var element = $('<form name="myForm">' +
208 ' <input type="text" ng-model="mega_model" name="mega_nam e" />' +
209 ' <select ng-model="fire_model" name="fire_name">' +
210 ' <option>value</option>' +
211 ' </select>' +
212 '</form>');
213
214 _.compile(element);
215
216 scope.mega_model = 'mega';
217 scope.fire_model = 'fire';
218 scope.$apply();
219
220 var form = scope['myForm'];
221 expect(form['mega_name'].modelValue).toBe('mega');
222 expect(form['fire_name'].modelValue).toBe('fire');
223 }));
224
225 it('should properly remove controls directly from the ngForm instance', inje ct((Scope scope) {
226 var element = $('<form name="myForm">' +
227 ' <input type="text" ng-model="mega_model" name="mega_con trol" />' +
228 '</form>');
229
230 _.compile(element);
231 scope.$apply();
232
233 var form = scope['myForm'];
234 var control = form['mega_control'];
235 form.removeControl(control);
236 expect(form['mega_control']).toBeNull();
237 }));
238
239 it('should remove all controls when the scope is destroyed', inject((Scope s cope) {
240 Scope childScope = scope.$new();
241 var element = $('<form name="myForm">' +
242 ' <input type="text" ng-model="one" name="one" />' +
243 ' <input type="text" ng-model="two" name="two" />' +
244 ' <input type="text" ng-model="three" name="three" />' +
245 '</form>');
246
247 _.compile(element, scope: childScope);
248 childScope.$apply();
249
250 var form = childScope['myForm'];
251 expect(form['one']).toBeDefined();
252 expect(form['two']).toBeDefined();
253 expect(form['three']).toBeDefined();
254
255 childScope.$destroy();
256
257 expect(form['one']).toBeNull();
258 expect(form['two']).toBeNull();
259 expect(form['three']).toBeNull();
260 }));
261 });
262
263 describe('onSubmit', () {
264 it('should suppress the submission event if no action is provided within the form', inject((Scope scope) {
265 var element = $('<form name="myForm"></form>');
266
267 _.compile(element);
268 scope.$apply();
269
270 Event submissionEvent = new Event.eventType('CustomEvent', 'submit');
271
272 expect(submissionEvent.defaultPrevented).toBe(false);
273 element[0].dispatchEvent(submissionEvent);
274 expect(submissionEvent.defaultPrevented).toBe(true);
275
276 Event fakeEvent = new Event.eventType('CustomEvent', 'running');
277
278 expect(fakeEvent.defaultPrevented).toBe(false);
279 element[0].dispatchEvent(submissionEvent);
280 expect(fakeEvent.defaultPrevented).toBe(false);
281 }));
282
283 it('should not prevent the submission event if an action is defined', inject ((Scope scope) {
284 var element = $('<form name="myForm" action="..."></form>');
285
286 _.compile(element);
287 scope.$apply();
288
289 Event submissionEvent = new Event.eventType('CustomEvent', 'submit');
290
291 expect(submissionEvent.defaultPrevented).toBe(false);
292 element[0].dispatchEvent(submissionEvent);
293 expect(submissionEvent.defaultPrevented).toBe(false);
294 }));
295
296 it('should execute the ng-submit expression if provided upon form submission ', inject((Scope scope) {
297 var element = $('<form name="myForm" ng-submit="submitted = true"></form>' );
298
299 _.compile(element);
300 scope.$apply();
301
302 _.rootScope.submitted = false;
303
304 Event submissionEvent = new Event.eventType('CustomEvent', 'submit');
305 element[0].dispatchEvent(submissionEvent);
306
307 expect(_.rootScope.submitted).toBe(true);
308 }));
309 });
56 }); 310 });
OLDNEW
« no previous file with comments | « third_party/pkg/angular/test/directive/ng_events_spec.dart ('k') | third_party/pkg/angular/test/directive/ng_model_spec.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698