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

Side by Side Diff: third_party/polymer/components/iron-form/test/basic.html

Issue 2906483004: [pinpoint] Add iron-form and paper-checkbox to polymer components. (Closed)
Patch Set: Created 3 years, 6 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
OLDNEW
(Empty)
1 <!doctype html>
2 <!--
3 @license
4 Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
5 This code may only be used under the BSD style license found at http://polymer.g ithub.io/LICENSE.txt
6 The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
7 The complete set of contributors may be found at http://polymer.github.io/CONTRI BUTORS.txt
8 Code distributed by Google as part of the polymer project is also
9 subject to an additional IP rights grant found at http://polymer.github.io/PATEN TS.txt
10 -->
11 <html>
12 <head>
13 <title>iron-form</title>
14
15 <script src="../../webcomponentsjs/webcomponents-lite.js"></script>
16 <script src="../../web-component-tester/browser.js"></script>
17
18 <link rel="import" href="../../polymer/polymer.html">
19 <link rel="import" href="../../paper-input/paper-input.html">
20 <link rel="import" href="../../paper-input/paper-textarea.html">
21 <link rel="import" href="../iron-form.html">
22 <link rel="import" href="simple-element.html">
23 <link rel="import" href="element-with-nested-form-element.html">
24 <link rel="import" href="element-with-nested-input.html">
25 <link rel="import" href="validatable-element-with-nested-elements.html">
26
27 </head>
28 <body>
29
30 <test-fixture id="Basic">
31 <template>
32 <form is="iron-form">
33 <simple-element name="zig" value="zag"></simple-element>
34 <input name="foo" value="bar">
35 </form>
36 </template>
37 </test-fixture>
38
39 <test-fixture id="Dupes">
40 <template>
41 <form is="iron-form">
42 <input name="foo" value="bar">
43 <input name="foo" value="barbar">
44 <simple-element name="zig" value="zig"></simple-element>
45 <simple-element name="zig" value="zag"></simple-element>
46 <simple-element name="zig" value="zug"></simple-element>
47 </form>
48 </template>
49 </test-fixture>
50
51 <test-fixture id="NestedDupes">
52 <template>
53 <form is="iron-form">
54 <element-with-nested-form-element name="foo" value="bar"></element-with- nested-form-element>
55 <element-with-nested-input name="zig" value="zag"></element-with-nested- input>
56 </form>
57 </template>
58 </test-fixture>
59
60 <test-fixture id="NestedSubmittable">
61 <template>
62 <form is="iron-form">
63 <element-with-nested-form-element>
64 <simple-element name="foo" value="bar"></simple-element>
65 </element-with-nested-form-element>
66 </form>
67 </template>
68 </test-fixture>
69
70 <test-fixture id="CheckedStates">
71 <template>
72 <form is="iron-form">
73 <input type="checkbox" name="foo" value="bar1" checked>
74 <input type="checkbox" name="foo" value="bar2">
75 <input type="checkbox" name="foo" value="bar3" checked>
76 <input type="checkbox" name="foo" value="bar4">
77 </form>
78 </template>
79 </test-fixture>
80
81 <test-fixture id="Disabled">
82 <template>
83 <form is="iron-form">
84 <input name="foo" value="bar1">
85 <input name="foo" value="bar2" disabled>
86 <input type="checkbox" name="zig" value="zag" disabled checked>
87 </form>
88 </template>
89 </test-fixture>
90
91 <test-fixture id="FormGet">
92 <template>
93 <form is="iron-form" action="/responds_with_json" method="get">
94 <simple-element name="zig" value="zag"></simple-element>
95 </form>
96 </template>
97 </test-fixture>
98
99 <test-fixture id="FormPost">
100 <template>
101 <form is="iron-form" action="/responds_with_json" method="post">
102 <simple-element name="zig" value="zag"></simple-element>
103 </form>
104 </template>
105 </test-fixture>
106
107 <test-fixture id="InvalidForm">
108 <template>
109 <form is="iron-form" action="/responds_with_json" method="post">
110 <simple-element name="zig"></simple-element>
111 <input name="foo" required>
112 </form>
113 </template>
114 </test-fixture>
115
116 <test-fixture id="FormWithRequiredCustomElements">
117 <template>
118 <form is="iron-form" action="/responds_with_json" method="post">
119 <simple-element required></simple-element>
120 </form>
121 </template>
122 </test-fixture>
123
124 <test-fixture id="FormWithRequiredElements">
125 <template>
126 <form is="iron-form" action="/responds_with_json" method="post">
127 <input required>
128 </form>
129 </template>
130 </test-fixture>
131
132 <test-fixture id="FormValidateNonRequiredCustomElements">
133 <template>
134 <form is="iron-form" action="/responds_with_json" method="post">
135 <paper-input label="numbers" pattern="^[0-9]$" ></paper-input>
136 </form>
137 </template>
138 </test-fixture>
139
140 <test-fixture id="FormValidateNonRequiredElements">
141 <template>
142 <form is="iron-form" action="/responds_with_json" method="post">
143 <input type="text" name="letters" pattern="^[a-z]$" >
144 </form>
145 </template>
146 </test-fixture>
147
148 <test-fixture id="FormValidateNestedElements">
149 <template>
150 <form is="iron-form">
151 <validatable-element-with-nested-elements>
152 <simple-element required></simple-element>
153 <input required>
154 </validatable-element-with-nested-elements>
155 </form>
156 </template>
157 </test-fixture>
158
159 <test-fixture id="FormForResetting">
160 <template>
161 <form is="iron-form">
162 <simple-element name="zig" value="zag"></simple-element>
163 <paper-input name="zig" value="zug"></paper-input>
164 <paper-input name="blank" value=""></paper-input>
165 <paper-textarea name="zig" value="zog"></paper-textarea>
166 <paper-textarea name="undef"></paper-textarea>
167 <paper-textarea name="blank" value=""></paper-textarea>
168 <input name="blank" value="">
169 <input name="foo" value="bar">
170 <input type="checkbox" name="foo" value="bar1" checked>
171 <input type="checkbox" name="foo" value="bar2">
172 </form>
173 </template>
174 </test-fixture>
175
176 <test-fixture id="NativeSelect">
177 <template>
178 <form is="iron-form">
179 <select name="numbers" multiple>
180 <option value="one" selected>one</option>
181 <option value="two">two</option>
182 <option value="three" selected>three</option>
183 <option value="four">four</option>
184 </select>
185
186 <select name="cheese">
187 <option value="yes" selected>yes</option>
188 <option value="no">no</option>
189 </select>
190 </form>
191 </template>
192 </test-fixture>
193
194 <script>
195 suite('registration', function() {
196 var f;
197 test('elements can be registered', function() {
198 f = fixture('Basic');
199
200 assert.equal(f._customElements.length, 1);
201 assert.equal(f.elements.length, 1);
202 });
203
204 test('elements can be unregistered', function(done) {
205 f = fixture('Basic');
206 var element = f.querySelector('simple-element');
207
208 assert.equal(f._customElements.length, 1);
209 assert.equal(f.elements.length, 1);
210
211 f.removeChild(element);
212
213 setTimeout(function() {
214 assert.equal(f._customElements.length, 0);
215 assert.equal(f.elements.length, 1);
216 done();
217 }, 200);
218 });
219 });
220
221 suite('validation', function() {
222 test('custom elements are validated if they don\'t have a name', function() {
223 var f = fixture('FormWithRequiredCustomElements');
224 assert.equal(f._customElements.length, 1);
225
226 var simpleElement = f._customElements[0];
227 assert.isFalse(!!simpleElement.name)
228
229 // custom elements
230 assert.isFalse(f.validate());
231 assert.isTrue(simpleElement.invalid);
232
233 simpleElement.value = 'batman';
234
235 assert.isTrue(f.validate());
236 assert.isFalse(simpleElement.invalid);
237
238 // Since the elements don't have names, they don't get serialized.
239 var json = f.serialize();
240 assert.equal(Object.keys(json).length, 0);
241 });
242
243 test('native elements are validated if they don\'t have a name', function() {
244 var f = fixture('FormWithRequiredElements');
245 assert.equal(f.elements.length, 1);
246
247 var input = f.elements[0];
248
249 assert.isFalse(!!input.name)
250
251 assert.isFalse(f.validate());
252 assert.isFalse(input.validity.valid);
253
254 input.value = 'robin';
255
256 assert.isTrue(f.validate());
257 assert.isTrue(input.validity.valid);
258
259 // Since the elements don't have names, they don't get serialized.
260 var json = f.serialize();
261 assert.equal(Object.keys(json).length, 0);
262 });
263
264 test('custom elements are validated if they have a name', function() {
265 var f = fixture('FormWithRequiredCustomElements');
266 assert.equal(f._customElements.length, 1);
267
268 var simpleElement = f._customElements[0];
269 simpleElement.name = 'zig';
270
271 assert.isFalse(f.validate());
272 assert.isTrue(simpleElement.invalid);
273
274 simpleElement.value = 'batman';
275
276 assert.isTrue(f.validate());
277 assert.isFalse(simpleElement.invalid);
278
279 // The elements have names, so they're serialized.
280 var json = f.serialize();
281 assert.equal(Object.keys(json).length, 1);
282 });
283
284 test('native elements are validated if they have a name', function() {
285 var f = fixture('FormWithRequiredElements');
286 assert.equal(f.elements.length, 1);
287
288 var input = f.elements[0];
289 input.name = 'zag';
290
291 assert.isFalse(f.validate());
292 assert.isFalse(input.validity.valid);
293
294 input.value = 'robin';
295
296 assert.isTrue(f.validate());
297 assert.isTrue(input.validity.valid);
298
299 // The elements have names, so they're serialized.
300 var json = f.serialize();
301 assert.equal(Object.keys(json).length, 1);
302 });
303
304 test('non-required custom elements are validated', function() {
305 var
306 f = fixture('FormValidateNonRequiredCustomElements'),
307 elements = f.getEffectiveChildren(),
308 input = elements && elements[0]
309 ;
310
311 assert.equal(elements.length, 1);
312
313 assert.isTrue(f.validate());
314 assert.isTrue(input.validate());
315
316 input.value = "abcdefg";
317
318 assert.isFalse(f.validate());
319 assert.isFalse(input.validate());
320 });
321
322 test('non-required native elements are validated', function() {
323 var f = fixture('FormValidateNonRequiredElements');
324 assert.equal(f.elements.length, 1);
325
326 var input = f.elements[0];
327
328 assert.isTrue(f.validate());
329 assert.isTrue(input.validity.valid);
330
331 input.value = "012345";
332
333 assert.isFalse(f.validate());
334 assert.isFalse(input.validity.valid);
335 });
336
337 test('nested elements are not validated', function() {
338 var f = fixture('FormValidateNestedElements');
339
340 // <validatable-element-with-nested-elements> returns true.
341 assert.isTrue(f.validate());
342
343 // The form also contains an invalid custom and native element, but those
344 // shouldn't affect the form's validity.
345 assert.equal(f._customElements.length, 2);
346 assert.equal(f.elements.length, 1);
347 assert.isFalse(f.$$('simple-element').validate());
348 assert.isFalse(f.$$('input').checkValidity());
349 });
350 });
351
352 suite('serializing', function() {
353 var f;
354 test('serializes both custom and native elements', function() {
355 f = fixture('Basic');
356
357 assert.equal(f._customElements.length, 1);
358 assert.equal(f.elements.length, 1);
359
360 var json = f.serialize();
361 assert.equal(Object.keys(json).length, 2);
362 assert.equal(json['zig'], 'zag');
363 assert.equal(json['foo'], 'bar');
364 });
365
366 test('serializes elements with duplicate names', function() {
367 f = fixture('Dupes');
368
369 assert.equal(f._customElements.length, 3);
370 assert.equal(f.elements.length, 2);
371
372 var json = f.serialize();
373 assert.equal(Object.keys(json).length, 2);
374 assert.equal(json['foo'].length, 2);
375 assert.equal(json['foo'][0], 'bar');
376 assert.equal(json['foo'][1], 'barbar');
377 assert.equal(json['zig'].length, 3);
378 assert.equal(json['zig'][0], 'zig');
379 assert.equal(json['zig'][1], 'zag');
380 assert.equal(json['zig'][2], 'zug');
381 });
382
383 test('serializes elements with checked states', function() {
384 f = fixture('CheckedStates');
385
386 assert.equal(f._customElements.length, 0);
387 assert.equal(f.elements.length, 4);
388
389 var json = f.serialize();
390 assert.equal(Object.keys(json).length, 1);
391 assert.equal(json['foo'].length, 2);
392 assert.equal(json['foo'][0], 'bar1');
393 assert.equal(json['foo'][1], 'bar3');
394 });
395
396 test('serializes a native select element with or without multiple selection' , function() {
397 f = fixture('NativeSelect');
398
399 assert.equal(f._customElements.length, 0);
400 assert.equal(f.elements.length, 2);
401
402 var json = f.serialize();
403 assert.equal(Object.keys(json).length, 2);
404
405 // Single selection.
406 assert.equal(json['cheese'], 'yes');
407
408 // Multiple selection.
409 assert.equal(json['numbers'].length, 2);
410 assert.equal(json['numbers'][0], 'one');
411 assert.equal(json['numbers'][1], 'three');
412 });
413
414 test('does not serialize disabled elements', function() {
415 f = fixture('Disabled');
416
417 assert.equal(f._customElements.length, 0);
418 assert.equal(f.elements.length, 3);
419
420 var json = f.serialize();
421 assert.equal(Object.keys(json).length, 1);
422 assert.equal(json['foo'], 'bar1');
423 });
424
425 test('nested elements are only serialized once', function() {
426 f = fixture('NestedDupes');
427
428 assert.equal(f._customElements.length, 3);
429
430 var json = f.serialize();
431 assert.equal(Object.keys(json).length, 2);
432 assert.equal(json['foo'], 'bar');
433 assert.equal(json['zig'], 'zag');
434 });
435
436
437 test('nested elements can be submitted if parents aren\'t submittable', func tion() {
438 f = fixture('NestedSubmittable');
439
440 var json = f.serialize();
441 assert.equal(Object.keys(json).length, 1);
442 assert.equal(json['foo'], 'bar');
443 });
444
445 });
446
447 suite('resetting', function () {
448 test('form restores the default values if changes were made', function(done) {
449 var form = fixture('FormForResetting');
450
451 // Initial values.
452 var customElement = form.querySelector('simple-element');
453 var input = form.querySelector('input[name="foo"]');
454 var inputBlank = form.querySelector('input[name="blank"]');
455 var checkbox1 = form.querySelectorAll('input[type="checkbox"]')[0];
456 var checkbox2 = form.querySelectorAll('input[type="checkbox"]')[1];
457 var paperInput = form.querySelector('paper-input[name="zig"]');
458 var paperInputBlank = form.querySelector('paper-input[name="blank"]');
459 var paperTextarea = form.querySelector('paper-textarea[name="zig"]');
460 var paperTextareaBlank = form.querySelector('paper-textarea[name="blank"]' );
461
462 assert.equal(customElement.value, 'zag');
463 assert.equal(input.value, 'bar');
464 assert.equal(inputBlank.value, '');
465 assert.isTrue(checkbox1.checked);
466 assert.isFalse(checkbox2.checked);
467 assert.equal(paperInput.value, 'zug');
468 assert.equal(paperInput.inputElement.value, 'zug');
469 assert.equal(paperInputBlank.value, '');
470 assert.equal(paperInputBlank.inputElement.value, '');
471 assert.equal(paperTextarea.value, 'zog');
472 assert.equal(paperTextarea.inputElement.textarea.value, 'zog');
473 assert.equal(paperTextareaBlank.value, '');
474 assert.equal(paperTextareaBlank.inputElement.textarea.value, '');
475
476 // Change the values.
477 customElement.value = 'not zag';
478 input.value = 'not bar';
479 inputBlank.value = 'not blank';
480 checkbox1.checked = false;
481 checkbox2.checked = true;
482 paperInput.value = 'not zug';
483 paperInputBlank.value = 'not blank';
484 paperTextarea.value = 'not zog';
485 paperTextareaBlank.value = 'not blank';
486
487 assert.equal(customElement.value, 'not zag');
488 assert.equal(input.value, 'not bar');
489 assert.equal(inputBlank.value, 'not blank');
490 assert.isFalse(checkbox1.checked);
491 assert.isTrue(checkbox2.checked);
492 assert.equal(paperInput.value, 'not zug');
493 assert.equal(paperInput.inputElement.value, 'not zug');
494 assert.equal(paperInputBlank.value, 'not blank');
495 assert.equal(paperInputBlank.inputElement.value, 'not blank');
496 assert.equal(paperTextarea.value, 'not zog');
497 assert.equal(paperTextarea.inputElement.textarea.value, 'not zog');
498 assert.equal(paperTextareaBlank.value, 'not blank');
499 assert.equal(paperTextareaBlank.inputElement.textarea.value, 'not blank');
500
501 form.addEventListener('iron-form-reset', function(event) {
502 // Restored initial values.
503 assert.equal(customElement.value, 'zag');
504 assert.equal(input.value, 'bar');
505 assert.equal(inputBlank.value, '');
506 assert.isTrue(checkbox1.checked);
507 assert.isFalse(checkbox2.checked);
508 assert.equal(paperInput.value, 'zug');
509 assert.equal(paperInput.inputElement.value, 'zug');
510 assert.equal(paperInputBlank.value, '');
511 assert.equal(paperInputBlank.inputElement.value, '');
512 assert.equal(paperTextarea.value, 'zog');
513 assert.equal(paperTextarea.inputElement.textarea.value, 'zog');
514 assert.equal(paperTextareaBlank.value, '');
515 assert.equal(paperTextareaBlank.inputElement.textarea.value, '');
516 done();
517 });
518
519 form.reset();
520 });
521
522 test('form restores the default values if no changes were made', function(do ne) {
523 var form = fixture('FormForResetting');
524
525 // Initial values.
526 var customElement = form.querySelector('simple-element');
527 var input = form.querySelector('input[name="foo"]');
528 var inputBlank = form.querySelector('input[name="blank"]');
529 var checkbox1 = form.querySelectorAll('input[type="checkbox"]')[0];
530 var checkbox2 = form.querySelectorAll('input[type="checkbox"]')[1];
531 var paperInput = form.querySelector('paper-input[name="zig"]');
532 var paperInputBlank = form.querySelector('paper-input[name="blank"]');
533 var paperTextarea = form.querySelector('paper-textarea[name="zig"]');
534 var paperTextareaBlank = form.querySelector('paper-textarea[name="blank"]' );
535
536 assert.equal(customElement.value, 'zag');
537 assert.equal(input.value, 'bar');
538 assert.equal(inputBlank.value, '');
539 assert.isTrue(checkbox1.checked);
540 assert.isFalse(checkbox2.checked);
541 assert.equal(paperInput.value, 'zug');
542 assert.equal(paperInput.inputElement.value, 'zug');
543 assert.equal(paperInputBlank.value, '');
544 assert.equal(paperInputBlank.inputElement.value, '');
545 assert.equal(paperTextarea.value, 'zog');
546 assert.equal(paperTextarea.inputElement.textarea.value, 'zog');
547 assert.equal(paperTextareaBlank.value, '');
548 assert.equal(paperTextareaBlank.inputElement.textarea.value, '');
549
550 form.addEventListener('iron-form-reset', function(event) {
551 // Restored initial values.
552 assert.equal(customElement.value, 'zag');
553 assert.equal(input.value, 'bar');
554 assert.equal(inputBlank.value, '');
555 assert.isTrue(checkbox1.checked);
556 assert.isFalse(checkbox2.checked);
557 assert.equal(paperInput.value, 'zug');
558 assert.equal(paperInput.inputElement.value, 'zug');
559 assert.equal(paperInputBlank.value, '');
560 assert.equal(paperInputBlank.inputElement.value, '');
561 assert.equal(paperTextarea.value, 'zog');
562 assert.equal(paperTextarea.inputElement.textarea.value, 'zog');
563 assert.equal(paperTextareaBlank.value, '');
564 assert.equal(paperTextareaBlank.inputElement.textarea.value, '');
565 done();
566 });
567
568 form.reset();
569 });
570
571 test('form restores null-value paper-textarea if initially undefined', funct ion(done) {
572 var form = fixture('FormForResetting');
573 var paperTextarea = form.querySelector('paper-textarea[name="undef"]');
574
575 form.addEventListener('iron-form-reset', function(event) {
576 // Setting the native textarea's value to undefined causes it to
577 // display literal "undefined", and paper-textarea.value is indirectly
578 // bound to the textarea's value, so iron-form resets any undefined
579 // initial values to null in order to avoid this problem.
580 assert.equal(paperTextarea.value, null);
581 assert.equal(paperTextarea.inputElement.textarea.value, '');
582 done();
583 });
584
585 form.reset();
586 });
587
588 test('validation messages are cleared', function(done) {
589 var form = fixture('FormWithRequiredCustomElements');
590 assert.equal(form._customElements.length, 1);
591
592 var customElement = form.querySelector('simple-element');
593
594 assert.isFalse(form.validate());
595 assert.isTrue(customElement.invalid);
596
597 form.addEventListener('iron-form-reset', function(event) {
598 // Cleared validation messages.
599 assert.isFalse(customElement.invalid);
600 done();
601 });
602
603 form.reset();
604
605 });
606
607 });
608
609 suite('submitting', function () {
610 var server;
611 var form;
612
613 setup(function() {
614 server = sinon.fakeServer.create();
615 server.respondWith(
616 'GET',
617 /\/responds_with_json.*/,
618 [
619 200,
620 '{"Content-Type":"application/json"}',
621 '{"success":true}'
622 ]
623 );
624
625 server.respondWith(
626 'POST',
627 /\/responds_with_json.*/,
628 [
629 200,
630 '{"Content-Type":"application/json"}',
631 '{"success":true}'
632 ]
633 );
634
635 server.respondWith(
636 'GET',
637 /\/responds_with_error.*/,
638 [
639 404,
640 '{"Content-Type":"application/text"}',
641 '{"success":false}'
642 ]
643 );
644 });
645
646 teardown(function() {
647 server.restore();
648 });
649
650 test('does not submit forms with invalid native elements', function(done) {
651 form = fixture('InvalidForm');
652 var nativeElement = form.querySelector('input');
653 var customElement = form.querySelector('simple-element');
654 customElement.value = "foo";
655
656 var submitted = false;
657 form.addEventListener('iron-form-submit', function() {
658 submitted = true;
659 });
660
661 form.addEventListener('iron-form-invalid', function() {
662 expect(submitted).to.be.equal(false);
663 expect(nativeElement.validity.valid).to.be.equal(false);
664 expect(customElement.invalid).to.be.equal(false);
665 done();
666 });
667
668 form.submit();
669 server.respond();
670 });
671
672 test('can modify the request in the presubmit', function(done) {
673 form = fixture('FormGet');
674
675 var submitted = false;
676 var presubmitted = false;
677
678 form.addEventListener('iron-form-submit', function() {
679 submitted = true;
680 });
681
682 form.addEventListener('iron-form-presubmit', function() {
683 presubmitted = true;
684 this.request.params = {batman: true};
685 });
686
687 form.addEventListener('iron-form-response', function(event) {
688 expect(submitted).to.be.equal(true);
689 expect(presubmitted).to.be.equal(true);
690
691 // We have changed the json parameters
692 expect(event.detail.url).to.contain('batman=true');
693
694 var response = event.detail.response;
695 expect(response).to.be.ok;
696 expect(response).to.be.an('object');
697 expect(response.success).to.be.equal(true);
698 done();
699 });
700
701 form.submit();
702 server.respond();
703 });
704
705
706 test('can do a custom submission in the presubmit', function(done) {
707 form = fixture('FormGet');
708
709 var presubmitted = false;
710
711 // Since we are not using the normal form submission, these events should
712 // never be called.
713 var formResponseHandler = sinon.spy();
714 form.addEventListener('iron-form-response', formResponseHandler);
715 var formSubmitHandler = sinon.spy();
716 form.addEventListener('iron-form-submit', formSubmitHandler);
717
718 form.addEventListener('iron-form-presubmit', function(event) {
719 presubmitted = true;
720 event.preventDefault();
721
722 // Your custom submission logic could go here (like using Firebase).
723 // In this case, fire a custom event as a an example.
724 this.fire('custom-form-submit');
725 });
726
727 form.addEventListener('custom-form-submit', function(event) {
728 expect(presubmitted).to.be.equal(true);
729 expect(formResponseHandler.callCount).to.be.equal(0);
730 expect(formSubmitHandler.callCount).to.be.equal(0);
731 done();
732 });
733
734 form.submit();
735 });
736
737 test('can submit with method=get', function(done) {
738 form = fixture('FormGet');
739
740 var submitted = false;
741 form.addEventListener('iron-form-submit', function() {
742 submitted = true;
743 });
744
745 form.addEventListener('iron-form-response', function(event) {
746 expect(submitted).to.be.equal(true);
747 expect(event.detail.url).to.contain('zig=zag');
748
749 var response = event.detail.response;
750 expect(response).to.be.ok;
751 expect(response).to.be.an('object');
752 expect(response.success).to.be.equal(true);
753 done();
754 });
755
756 form.submit();
757 server.respond();
758 });
759
760 test('can submit with method=post', function(done) {
761 form = fixture('FormPost');
762
763 var submitted = false;
764 form.addEventListener('iron-form-submit', function() {
765 submitted = true;
766 });
767
768 form.addEventListener('iron-form-response', function(event) {
769 expect(submitted).to.be.equal(true);
770
771 var response = event.detail.response;
772 expect(response).to.be.ok;
773 expect(response).to.be.an('object');
774 expect(response.success).to.be.equal(true);
775 done();
776 });
777
778 form.submit();
779 server.respond();
780 });
781
782 test('can relay errors', function(done) {
783 form = fixture('FormPost');
784 form.action = "/responds_with_error";
785
786 form.addEventListener('iron-form-error', function(event) {
787 var error = event.detail;
788
789 expect(error).to.be.ok;
790 expect(error).to.be.an('object');
791 expect(error.error).to.be.ok;
792 done();
793 });
794
795 form.submit();
796 server.respond();
797 });
798
799 });
800
801 </script>
802
803 </body>
804 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698