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

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

Issue 257423008: Update all Angular libs (run update_all.sh). (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 8 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 input_select_spec; 1 library input_select_spec;
2 2
3 import '../_specs.dart'; 3 import '../_specs.dart';
4 4
5 //TODO(misko): re-enabled disabled tests once we have forms. 5 //TODO(misko): re-enabled disabled tests once we have forms.
6 6
7 main() { 7 main() {
8 describe('input-select', () { 8 describe('input-select', () {
9 9
10 describe('ng-value', () { 10 describe('ng-value', () {
11 TestBed _; 11 TestBed _;
12 beforeEach(inject((TestBed tb) => _ = tb)); 12 beforeEach((TestBed tb) => _ = tb);
13 13
14 it('should retrieve using ng-value', () { 14 it('should retrieve using ng-value', () {
15 _.compile( 15 _.compile(
16 '<select ng-model="robot" probe="p">' 16 '<select ng-model="robot" probe="p">'
17 '<option ng-repeat="r in robots" ng-value="r">{{r.name}}</option>' 17 '<option ng-repeat="r in robots" ng-value="r">{{r.name}}</option>'
18 '</select>'); 18 '</select>');
19 var r2d2 = {"name":"r2d2"}; 19 var r2d2 = {"name":"r2d2"};
20 var c3p0 = {"name":"c3p0"}; 20 var c3p0 = {"name":"c3p0"};
21 _.rootScope.context['robots'] = [ r2d2, c3p0 ]; 21 _.rootScope.context['robots'] = [ r2d2, c3p0 ];
22 _.rootScope.apply(); 22 _.rootScope.apply();
(...skipping 17 matching lines...) Expand all
40 _.rootScope.apply(); 40 _.rootScope.apply();
41 _.selectOption(_.rootElement, 'c3p0'); 41 _.selectOption(_.rootElement, 'c3p0');
42 expect(_.rootScope.context['robot']).toEqual([c3p0]); 42 expect(_.rootScope.context['robot']).toEqual([c3p0]);
43 43
44 _.rootScope.context['robot'] = [r2d2]; 44 _.rootScope.context['robot'] = [r2d2];
45 _.rootScope.apply(); 45 _.rootScope.apply();
46 expect(_.rootScope.context['robot']).toEqual([r2d2]); 46 expect(_.rootScope.context['robot']).toEqual([r2d2]);
47 expect(_.rootElement).toEqualSelect([['r2d2'], 'c3p0']); 47 expect(_.rootElement).toEqualSelect([['r2d2'], 'c3p0']);
48 }); 48 });
49 }); 49 });
50 50
51 TestBed _; 51 TestBed _;
52 52
53 beforeEach(inject((TestBed tb) => _ = tb)); 53 beforeEach((TestBed tb) => _ = tb);
54 54
55 describe('select-one', () { 55 describe('select-one', () {
56 it('should compile children of a select without a ngModel, but not create a model for it', 56 it('should compile children of a select without a ngModel, but not create a model for it',
57 () { 57 () {
58 _.compile( 58 _.compile(
59 '<select>' 59 '<select>'
60 '<option selected="true">{{a}}</option>' 60 '<option selected="true">{{a}}</option>'
61 '<option value="">{{b}}</option>' 61 '<option value="">{{b}}</option>'
62 '<option>C</option>' 62 '<option>C</option>'
63 '</select>'); 63 '</select>');
(...skipping 21 matching lines...) Expand all
85 it('should work with repeated value options', () { 85 it('should work with repeated value options', () {
86 _.compile( 86 _.compile(
87 '<select ng-model="robot" probe="p">' 87 '<select ng-model="robot" probe="p">'
88 '<option ng-repeat="r in robots">{{r}}</option>' 88 '<option ng-repeat="r in robots">{{r}}</option>'
89 '</select>'); 89 '</select>');
90 90
91 _.rootScope.context['robots'] = ['c3p0', 'r2d2']; 91 _.rootScope.context['robots'] = ['c3p0', 'r2d2'];
92 _.rootScope.context['robot'] = 'r2d2'; 92 _.rootScope.context['robot'] = 'r2d2';
93 _.rootScope.apply(); 93 _.rootScope.apply();
94 94
95 var select = _.rootScope.context['p'].directive(InputSelectDirective); 95 var select = _.rootScope.context['p'].directive(InputSelect);
96 expect(_.rootElement).toEqualSelect(['c3p0', ['r2d2']]); 96 expect(_.rootElement).toEqualSelect(['c3p0', ['r2d2']]);
97 97
98 _.rootElement.querySelectorAll('option')[0].selected = true; 98 _.rootElement.querySelectorAll('option')[0].selected = true;
99 _.triggerEvent(_.rootElement, 'change'); 99 _.triggerEvent(_.rootElement, 'change');
100 100
101 101
102 expect(_.rootElement).toEqualSelect([['c3p0'], 'r2d2']); 102 expect(_.rootElement).toEqualSelect([['c3p0'], 'r2d2']);
103 expect(_.rootScope.context['robot']).toEqual('c3p0'); 103 expect(_.rootScope.context['robot']).toEqual('c3p0');
104 104
105 _.rootScope.apply(() { 105 _.rootScope.apply(() {
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 it('should set the model to empty string when empty option is selected', () { 145 it('should set the model to empty string when empty option is selected', () {
146 _.rootScope.context['robot'] = 'x'; 146 _.rootScope.context['robot'] = 'x';
147 _.compile( 147 _.compile(
148 '<select ng-model="robot" probe="p">' + 148 '<select ng-model="robot" probe="p">' +
149 '<option value="">--select--</option>' + 149 '<option value="">--select--</option>' +
150 '<option value="x">robot x</option>' + 150 '<option value="x">robot x</option>' +
151 '<option value="y">robot y</option>' + 151 '<option value="y">robot y</option>' +
152 '</select>'); 152 '</select>');
153 _.rootScope.apply(); 153 _.rootScope.apply();
154 154
155 var select = _.rootScope.context['p'].directive(InputSelectDirective); 155 var select = _.rootScope.context['p'].directive(InputSelect);
156 156
157 expect(_.rootElement).toEqualSelect(['', ['x'], 'y']); 157 expect(_.rootElement).toEqualSelect(['', ['x'], 'y']);
158 158
159 _.selectOption(_.rootElement, '--select--'); 159 _.selectOption(_.rootElement, '--select--');
160 160
161 expect(_.rootElement).toEqualSelect([[''], 'x', 'y']); 161 expect(_.rootElement).toEqualSelect([[''], 'x', 'y']);
162 expect(_.rootScope.context['robot']).toEqual(null); 162 expect(_.rootScope.context['robot']).toEqual(null);
163 }); 163 });
164 164
165 describe('interactions with repeated options', () { 165 describe('interactions with repeated options', () {
166 it('should select empty option when model is undefined', () { 166 it('should select empty option when model is undefined', () {
167 _.rootScope.context['robots'] = ['c3p0', 'r2d2']; 167 _.rootScope.context['robots'] = ['c3p0', 'r2d2'];
168 _.compile( 168 _.compile(
169 '<select ng-model="robot">' + 169 '<select ng-model="robot">' +
170 '<option value="">--select--</option>' + 170 '<option value="">--select--</option>' +
171 '<option ng-repeat="r in robots">{{r}}</option>' + 171 '<option ng-repeat="r in robots">{{r}}</option>' +
172 '</select>'); 172 '</select>');
173 _.rootScope.apply(); 173 _.rootScope.apply();
174 expect(_.rootElement).toEqualSelect([[''], 'c3p0', 'r2d2']); 174 expect(_.rootElement).toEqualSelect([[''], 'c3p0', 'r2d2']);
175 }); 175 });
176 176
177 it('should set model to empty string when selected', () { 177 it('should set model to empty string when selected', () {
178 _.rootScope.context['robots'] = ['c3p0', 'r2d2']; 178 _.rootScope.context['robots'] = ['c3p0', 'r2d2'];
179 _.compile( 179 _.compile(
180 '<select ng-model="robot" probe="p">' + 180 '<select ng-model="robot" probe="p">' +
181 '<option value="">--select--</option>' + 181 '<option value="">--select--</option>' +
182 '<option ng-repeat="r in robots">{{r}}</option>' + 182 '<option ng-repeat="r in robots">{{r}}</option>' +
183 '</select>'); 183 '</select>');
184 _.rootScope.apply(); 184 _.rootScope.apply();
185 var select = _.rootScope.context['p'].directive(InputSelectDirective ); 185 var select = _.rootScope.context['p'].directive(InputSelect);
186 186
187 _.selectOption(_.rootElement, 'c3p0'); 187 _.selectOption(_.rootElement, 'c3p0');
188 expect(_.rootElement).toEqualSelect(['', ['c3p0'], 'r2d2']); 188 expect(_.rootElement).toEqualSelect(['', ['c3p0'], 'r2d2']);
189 expect( _.rootScope.context['robot']).toEqual('c3p0'); 189 expect( _.rootScope.context['robot']).toEqual('c3p0');
190 190
191 _.selectOption(_.rootElement, '--select--'); 191 _.selectOption(_.rootElement, '--select--');
192 192
193 expect(_.rootElement).toEqualSelect([[''], 'c3p0', 'r2d2']); 193 expect(_.rootElement).toEqualSelect([[''], 'c3p0', 'r2d2']);
194 expect( _.rootScope.context['robot']).toEqual(null); 194 expect( _.rootScope.context['robot']).toEqual(null);
195 }); 195 });
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
419 expect(_.rootElement).toEqualSelect([]); 419 expect(_.rootElement).toEqualSelect([]);
420 _.rootScope.context['attached'] = true; 420 _.rootScope.context['attached'] = true;
421 _.rootScope.apply(); 421 _.rootScope.apply();
422 expect(_.rootElement).toEqualSelect(['a', ['b']]); 422 expect(_.rootElement).toEqualSelect(['a', ['b']]);
423 }); 423 });
424 }); 424 });
425 425
426 426
427 describe('select from angular.js', () { 427 describe('select from angular.js', () {
428 TestBed _; 428 TestBed _;
429 beforeEach(inject((TestBed tb) => _ = tb)); 429 beforeEach((TestBed tb) => _ = tb);
430 430
431 var scope, formElement, element; 431 var scope, formElement, element;
432 432
433 compile(html) { 433 compile(html) {
434 _.compile('<form name="form">' + html + '</form>'); 434 _.compile('<form name="form">' + html + '</form>');
435 element = _.rootElement.querySelector('select'); 435 element = _.rootElement.querySelector('select');
436 scope.apply(); 436 scope.apply();
437 } 437 }
438 438
439 beforeEach(inject((Scope rootScope) { 439 beforeEach((Scope rootScope) {
440 scope = rootScope; 440 scope = rootScope;
441 formElement = element = null; 441 formElement = element = null;
442 })); 442 });
443 443
444 444
445 afterEach(() { 445 afterEach(() {
446 scope.destroy(); //disables unknown option work during destruction 446 scope.destroy(); //disables unknown option work during destruction
447 }); 447 });
448 448
449 449
450 describe('select-one', () { 450 describe('select-one', () {
451 451
452 it('should compile children of a select without a ngModel, but not creat e a model for it', 452 it('should compile children of a select without a ngModel, but not creat e a model for it',
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
490 scope.apply(() { 490 scope.apply(() {
491 scope.context['selection'] = 'c'; 491 scope.context['selection'] = 'c';
492 }); 492 });
493 493
494 element.value = 'c'; 494 element.value = 'c';
495 _.triggerEvent(element, 'change'); 495 _.triggerEvent(element, 'change');
496 expect(log).toEqual('change:c;'); 496 expect(log).toEqual('change:c;');
497 }); 497 });
498 498
499 499
500 xit('should require', () { 500 it('should require', () {
501 compile( 501 compile(
502 '<select name="select" ng-model="selection" required ng-change="chan ge()">' + 502 '<select name="select" ng-model="selection" probe="i" required ng-ch ange="change()">' +
503 '<option value=""></option>' + 503 '<option value=""></option>' +
504 '<option value="c">C</option>' + 504 '<option value="c">C</option>' +
505 '</select>'); 505 '</select>');
506 506
507 var element = scope.context['i'].element;
508
509 scope.context['log'] = '';
507 scope.context['change'] = () { 510 scope.context['change'] = () {
508 scope.log += 'change;'; 511 scope.context['log'] += 'change;';
509 }; 512 };
510 513
511 scope.apply(() { 514 scope.apply(() {
512 scope.context['log'] = ''; 515 scope.context['log'] = '';
513 scope.context['selection'] = 'c'; 516 scope.context['selection'] = 'c';
514 }); 517 });
515 518
516 expect(scope.context['form'].select.$error.required).toEqual(false);; 519 expect(scope.context['form']['select'].hasErrorState('ng-required')).t oEqual(false);
517 expect(element).toEqualValid(); 520 expect(scope.context['form']['select'].valid).toEqual(true);
518 expect(element).toEqualPristine(); 521 expect(scope.context['form']['select'].pristine).toEqual(true);
519 522
520 scope.apply(() { 523 scope.apply(() {
521 scope.context['selection'] = ''; 524 scope.context['selection'] = '';
522 }); 525 });
523 526
524 expect(scope.context['form'].select.$error.required).toEqual(true);; 527 expect(scope.context['form']['select'].hasErrorState('ng-required')).t oEqual(true);
525 expect(element).toEqualInvalid(); 528 expect(scope.context['form']['select'].invalid).toEqual(true);
526 expect(element).toEqualPristine(); 529 expect(scope.context['form']['select'].pristine).toEqual(true);
527 expect(scope.context['log']).toEqual(''); 530 expect(scope.context['log']).toEqual('');
528 531
529 element[0].value = 'c'; 532 element.value = 'c';
530 _.triggerEvent(element, 'change'); 533 _.triggerEvent(element, 'change');
531 expect(element).toEqualValid(); 534 scope.apply();
532 expect(element).toEqualDirty(); 535
536 expect(scope.context['form']['select'].valid).toEqual(true);
537 expect(scope.context['form']['select'].dirty).toEqual(true);
533 expect(scope.context['log']).toEqual('change;'); 538 expect(scope.context['log']).toEqual('change;');
534 }); 539 });
535 540
536 541
537 xit('should not be invalid if no require', () { 542 it('should not be invalid if no require', () {
538 compile( 543 compile(
539 '<select name="select" ng-model="selection">' + 544 '<select name="select" ng-model="selection">' +
540 '<option value=""></option>' + 545 '<option value=""></option>' +
541 '<option value="c">C</option>' + 546 '<option value="c">C</option>' +
542 '</select>'); 547 '</select>');
543 548
544 expect(element).toEqualValid(); 549 expect(scope.context['form']['select'].valid).toEqual(true);
545 expect(element).toEqualPristine(); 550 expect(scope.context['form']['select'].pristine).toEqual(true);
546 }); 551 });
547 552
548 553
549 describe('empty option', () { 554 describe('empty option', () {
550 555
551 it('should select the empty option when model is undefined', () { 556 it('should select the empty option when model is undefined', () {
552 compile('<select ng-model="robot">' + 557 compile('<select ng-model="robot">' +
553 '<option value="">--select--</option>' + 558 '<option value="">--select--</option>' +
554 '<option value="x">robot x</option>' + 559 '<option value="x">robot x</option>' +
555 '<option value="y">robot y</option>' + 560 '<option value="y">robot y</option>' +
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
609 scope.context['selection'] = ['A']; 614 scope.context['selection'] = ['A'];
610 }); 615 });
611 expect(element).toEqualSelect([['A'], 'B']); 616 expect(element).toEqualSelect([['A'], 'B']);
612 617
613 scope.apply(() { 618 scope.apply(() {
614 scope.context['selection'].add('B'); 619 scope.context['selection'].add('B');
615 }); 620 });
616 expect(element).toEqualSelect([['A'], ['B']]); 621 expect(element).toEqualSelect([['A'], ['B']]);
617 }); 622 });
618 623
619 xit('should require', () { 624 it('should require', () {
620 compile( 625 compile(
621 '<select name="select" ng-model="selection" multiple required>' + 626 '<select name="select" probe="i" ng-model="selection" multiple requi red>' +
622 '<option>A</option>' + 627 '<option>A</option>' +
623 '<option>B</option>' + 628 '<option>B</option>' +
624 '</select>'); 629 '</select>');
625 630
631 var element = scope.context['i'].element;
626 scope.apply(() { 632 scope.apply(() {
627 scope.context['selection'] = []; 633 scope.context['selection'] = [];
628 }); 634 });
629 635
630 expect(scope.context['form'].select.$error.required).toEqual(true);; 636 expect(scope.context['form']['select'].hasErrorState('ng-required')).t oEqual(true);
631 expect(element).toEqualInvalid(); 637 expect(scope.context['form']['select'].invalid).toEqual(true);
632 expect(element).toEqualPristine(); 638 expect(scope.context['form']['select'].pristine).toEqual(true);
633 639
634 scope.apply(() { 640 scope.apply(() {
635 scope.context['selection'] = ['A']; 641 scope.context['selection'] = ['A'];
636 }); 642 });
637 643
638 expect(element).toEqualValid(); 644 expect(scope.context['form']['select'].valid).toEqual(true);
639 expect(element).toEqualPristine(); 645 expect(scope.context['form']['select'].pristine).toEqual(true);
640 646
641 element[0].value = 'B'; 647 element.value = 'B';
642 _.triggerEvent(element, 'change'); 648 _.triggerEvent(element, 'change');
643 expect(element).toEqualValid(); 649
644 expect(element).toEqualDirty(); 650 expect(scope.context['form']['select'].valid).toEqual(true);
651 expect(scope.context['form']['select'].dirty).toEqual(true);
645 }); 652 });
646 }); 653 });
647 654
648 655
649 describe('ngOptions', () { 656 describe('ngOptions', () {
650 createSelect(attrs, [blank, unknown, ngRepeat, text, ngValue]) { 657 createSelect(attrs, [blank, unknown, ngRepeat, text, ngValue]) {
651 var html = '<select'; 658 var html = '<select';
652 attrs.forEach((key, value) { 659 attrs.forEach((key, value) {
653 if (value is bool) { 660 if (value is bool) {
654 if (value != null) html += ' $key'; 661 if (value != null) html += ' $key';
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
851 expect(element).toEqualSelect([['A'], 'B']); 858 expect(element).toEqualSelect([['A'], 'B']);
852 859
853 scope.apply(() { 860 scope.apply(() {
854 scope.context['selected'] = scope.context['values'][1]; 861 scope.context['selected'] = scope.context['values'][1];
855 }); 862 });
856 863
857 expect(element).toEqualSelect(['A', ['B']]); 864 expect(element).toEqualSelect(['A', ['B']]);
858 }); 865 });
859 866
860 867
861 // TODO(misko): re-enable once we support group by 868 it('should bind to scope value and group', () {
862 xit('should bind to scope value and group', () { 869 var element = _.compile(
863 createSelect({ 870 '<select ng-model="selected" probe="p">'
864 'ng-model': 'selected', 871 '<optgroup label=\'{{ group["title"] }}\' ng-repeat="group in values">'
865 'ng-options': 'item.name group by item.group for item in values' 872 '<option value=\'{{ item["val"] }}\' '
873 'ng-repeat=\'item in group["items"]\'>{{ item["name" ] }}</option>'
874 '</optgroup>'
875 '</select>');
876
877 scope.apply(() {
878 scope.context['values'] = [
879 { 'title': 'first', 'items':
880 [{ 'val':'a', 'name' : 'A' }, { 'val':'c', 'name' : 'C' } ]},
881 { 'title': 'second', 'items':
882 [{ 'val':'b', 'name' : 'B' }, { 'val':'d', 'name' : 'D' } ]}
883 ];
884 scope.context['selected'] = scope.context['values'][1]['items'][0] ['val'];
866 }); 885 });
867 886
868 scope.apply(() { 887 expect(element).toEqualSelect(['a', 'c', ['b'], 'd']);
869 scope.context['values'] = [{'name': 'A'},
870 {'name': 'B', group: 'first'},
871 {'name': 'C', group: 'second'},
872 {'name': 'D', group: 'first'},
873 {'name': 'E', group: 'second'}];
874 scope.context['selected'] = scope.context['values'][3];
875 });
876
877 expect(element).toEqualSelect(['A', 'B', ['D'], 'C', 'E']);
878 888
879 var first = element.querySelectorAll('optgroup')[0]; 889 var first = element.querySelectorAll('optgroup')[0];
880 var b = first.querySelectorAll('option')[0]; 890 var b = first.querySelectorAll('option')[0];
881 var d = first.querySelectorAll('option')[1]; 891 var d = first.querySelectorAll('option')[1];
882 expect(first.attr('label')).toEqual('first'); 892 expect(first.getAttribute('label')).toEqual('first');
883 expect(b.text).toEqual('B'); 893 expect(b.text).toEqual('A');
884 expect(d.text).toEqual('D'); 894 expect(d.text).toEqual('C');
885 895
886 var second = element.querySelectorAll('optgroup')[1]; 896 var second = element.querySelectorAll('optgroup')[1];
887 var c = second.querySelectorAll('option')[0]; 897 var c = second.querySelectorAll('option')[0];
888 var e = second.querySelectorAll('option')[1]; 898 var e = second.querySelectorAll('option')[1];
889 expect(second.attr('label')).toEqual('second'); 899 expect(second.getAttribute('label')).toEqual('second');
890 expect(c.text).toEqual('C'); 900 expect(c.text).toEqual('B');
891 expect(e.text).toEqual('E'); 901 expect(e.text).toEqual('D');
892 902
893 scope.apply(() { 903 scope.apply(() {
894 scope.context['selected'] = scope.context['values'][0]; 904 scope.context['selected'] = scope.context['values'][0]['items'][1] ['val'];
895 }); 905 });
896 906
897 expect(element.value).toEqual('0'); 907 expect(element.value).toEqual('c');
898 }); 908 });
899 909
900 910
901 it('should bind to scope value through experession', () { 911 it('should bind to scope value through experession', () {
902 createSelect({'ng-model': 'selected'}, null, null, 'item in values', 'item.name', 'item.id'); 912 createSelect({'ng-model': 'selected'}, null, null, 'item in values', 'item.name', 'item.id');
903 913
904 scope.apply(() { 914 scope.apply(() {
905 scope.context['values'] = [{'id': 10, 'name': 'A'}, {'id': 20, 'na me': 'B'}]; 915 scope.context['values'] = [{'id': 10, 'name': 'A'}, {'id': 20, 'na me': 'B'}];
906 scope.context['selected'] = scope.context['values'][0]['id']; 916 scope.context['selected'] = scope.context['values'][0]['id'];
907 }); 917 });
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after
1220 }, true); 1230 }, true);
1221 1231
1222 1232
1223 scope.apply(() { 1233 scope.apply(() {
1224 scope.context['values'] = [{'name': 'A', 'id': 1}, {'name': 'B', ' id': 2}]; 1234 scope.context['values'] = [{'name': 'A', 'id': 1}, {'name': 'B', ' id': 2}];
1225 scope.context['required'] = false; 1235 scope.context['required'] = false;
1226 }); 1236 });
1227 1237
1228 element.value = ''; 1238 element.value = '';
1229 _.triggerEvent(element, 'change'); 1239 _.triggerEvent(element, 'change');
1230 expect(element).toEqualValid(); 1240 expect(element).toBeValid();
1231 1241
1232 scope.apply(() { 1242 scope.apply(() {
1233 scope.context['required'] = true; 1243 scope.context['required'] = true;
1234 }); 1244 });
1235 expect(element).toEqualInvalid(); 1245 expect(element).not.toBeValid();
1236 1246
1237 scope.apply(() { 1247 scope.apply(() {
1238 scope.context['value'] = scope.context['values'][0]; 1248 scope.context['value'] = scope.context['values'][0];
1239 }); 1249 });
1240 expect(element).toEqualValid(); 1250 expect(element).toBeValid();
1241 1251
1242 element.value = ''; 1252 element.value = '';
1243 _.triggerEvent(element, 'change'); 1253 _.triggerEvent(element, 'change');
1244 expect(element).toEqualInvalid(); 1254 expect(element).not.toBeValid();
1245 1255
1246 scope.apply(() { 1256 scope.apply(() {
1247 scope.context['required'] = false; 1257 scope.context['required'] = false;
1248 }); 1258 });
1249 expect(element).toEqualValid(); 1259 expect(element).toBeValid();
1250 }); 1260 });
1251 }); 1261 });
1252 }); 1262 });
1253 1263
1254 1264
1255 describe('option', () { 1265 describe('option', () {
1256 1266
1257 it('should populate value attribute on OPTION', () { 1267 it('should populate value attribute on OPTION', () {
1258 compile('<select ng-model="x"><option selected>abc</option></select>') ; 1268 compile('<select ng-model="x"><option selected>abc</option></select>') ;
1259 expect(element).toEqualSelect([['?'], 'abc']); 1269 expect(element).toEqualSelect([['?'], 'abc']);
1260 }); 1270 });
1261 1271
1262 it('should ignore value if already exists', () { 1272 it('should ignore value if already exists', () {
1263 compile('<select ng-model="x"><option value="abc">xyz</option></select >'); 1273 compile('<select ng-model="x"><option value="abc">xyz</option></select >');
1264 expect(element).toEqualSelect([['?'], 'abc']); 1274 expect(element).toEqualSelect([['?'], 'abc']);
1265 }); 1275 });
1266 1276
1267 it('should set value even if self closing HTML', () { 1277 it('should set value even if self closing HTML', () {
1268 scope.context['x'] = 'hello'; 1278 scope.context['x'] = 'hello';
1269 compile('<select ng-model="x"><option>hello</select>'); 1279 compile('<select ng-model="x"><option>hello</select>');
1270 expect(element).toEqualSelect([['hello']]); 1280 expect(element).toEqualSelect([['hello']]);
1271 }); 1281 });
1272 1282
1273 it('should not blow up when option directive is found inside of a datali st', 1283 it('should not blow up when option directive is found inside of a datali st',
1274 () { 1284 () {
1275 _.compile('<div>' + 1285 _.compile('<div>'
1276 '<datalist><option>some val</option></datalist>' + 1286 '<datalist><option>some val</option></datalist>'
1277 '<span>{{foo}}</span>' + 1287 '<span>{{foo}}</span>'
1278 '</div>'); 1288 '</div>');
1279 1289
1280 _.rootScope.context['foo'] = 'success'; 1290 _.rootScope.context['foo'] = 'success';
1281 _.rootScope.apply(); 1291 _.rootScope.apply();
1282 expect(_.rootElement.querySelector('span').text).toEqual('success'); 1292 expect(_.rootElement.querySelector('span').text).toEqual('success');
1283 }); 1293 });
1284 }); 1294 });
1285 }); 1295 });
1286 }); 1296 });
1287 } 1297 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698