@@ -38,8 +38,28 @@ describe('select', function() {
38
38
} ;
39
39
40
40
return equals ( expectedValues , actualValues ) ;
41
+ } ,
42
+
43
+ toEqualOption : function ( value , text , label ) {
44
+ var errors = [ ] ;
45
+ if ( this . actual . attr ( 'value' ) !== value ) {
46
+ errors . push ( 'Expected option value "' + this . actual . attr ( 'value' ) + '" to equal "' + value + '"' ) ;
47
+ }
48
+ if ( text && this . actual . text ( ) !== text ) {
49
+ errors . push ( 'Expected option value "' + this . actual . attr ( 'value' ) + '" to equal "' + value + '"' ) ;
50
+ }
51
+ if ( label && this . actual . attr ( 'label' ) !== label ) {
52
+ errors . push ( 'Expected option value "' + this . actual . attr ( 'value' ) + '" to equal "' + value + '"' ) ;
53
+ }
54
+
55
+ this . message = function ( ) {
56
+ return errors . join ( '\n' ) ;
57
+ } ;
58
+
59
+ return errors . length === 0 ;
41
60
}
42
61
} ) ;
62
+
43
63
} ) ;
44
64
45
65
@@ -756,9 +776,9 @@ describe('select', function() {
756
776
757
777
var options = element . find ( 'option' ) ;
758
778
expect ( options . length ) . toEqual ( 3 ) ;
759
- expect ( sortedHtml ( options [ 0 ] ) ) . toEqual ( '<option value="?"></option> ') ;
760
- expect ( sortedHtml ( options [ 1 ] ) ) . toEqual ( '<option value="10"> ten</option> ') ;
761
- expect ( sortedHtml ( options [ 2 ] ) ) . toEqual ( '<option value="20"> twenty</option> ') ;
779
+ expect ( options . eq ( 0 ) ) . toEqualOption ( '?' , ' ') ;
780
+ expect ( options . eq ( 1 ) ) . toEqualOption ( '10' , ' ten') ;
781
+ expect ( options . eq ( 2 ) ) . toEqualOption ( '20' , ' twenty') ;
762
782
} ) ;
763
783
764
784
it ( 'should preserve value even when reference has changed (single&array)' , function ( ) {
@@ -1047,9 +1067,9 @@ describe('select', function() {
1047
1067
1048
1068
var options = element . find ( 'option' ) ;
1049
1069
expect ( options . length ) . toEqual ( 3 ) ;
1050
- expect ( sortedHtml ( options [ 0 ] ) ) . toEqual ( '<option value="0">A</option> ') ;
1051
- expect ( sortedHtml ( options [ 1 ] ) ) . toEqual ( '<option value="1">B</option> ') ;
1052
- expect ( sortedHtml ( options [ 2 ] ) ) . toEqual ( '<option value="2">C</option> ') ;
1070
+ expect ( options . eq ( 0 ) ) . toEqualOption ( '0' , 'A ') ;
1071
+ expect ( options . eq ( 1 ) ) . toEqualOption ( '1' , 'B ') ;
1072
+ expect ( options . eq ( 2 ) ) . toEqualOption ( '2' , 'C ') ;
1053
1073
} ) ;
1054
1074
1055
1075
it ( 'should render zero as a valid display value' , function ( ) {
@@ -1062,9 +1082,9 @@ describe('select', function() {
1062
1082
1063
1083
var options = element . find ( 'option' ) ;
1064
1084
expect ( options . length ) . toEqual ( 3 ) ;
1065
- expect ( sortedHtml ( options [ 0 ] ) ) . toEqual ( '<option value="0">0</option> ') ;
1066
- expect ( sortedHtml ( options [ 1 ] ) ) . toEqual ( '<option value="1">1</option> ') ;
1067
- expect ( sortedHtml ( options [ 2 ] ) ) . toEqual ( '<option value="2">2</option> ') ;
1085
+ expect ( options . eq ( 0 ) ) . toEqualOption ( '0' , '0 ') ;
1086
+ expect ( options . eq ( 1 ) ) . toEqualOption ( '1' , '1 ') ;
1087
+ expect ( options . eq ( 2 ) ) . toEqualOption ( '2' , '2 ') ;
1068
1088
} ) ;
1069
1089
1070
1090
@@ -1081,9 +1101,9 @@ describe('select', function() {
1081
1101
1082
1102
var options = element . find ( 'option' ) ;
1083
1103
expect ( options . length ) . toEqual ( 3 ) ;
1084
- expect ( sortedHtml ( options [ 0 ] ) ) . toEqual ( '<option value=" blue">blue</option> ') ;
1085
- expect ( sortedHtml ( options [ 1 ] ) ) . toEqual ( '<option value=" green">green</option> ') ;
1086
- expect ( sortedHtml ( options [ 2 ] ) ) . toEqual ( '<option value=" red">red</option> ') ;
1104
+ expect ( options . eq ( 0 ) ) . toEqualOption ( 'blue' , ' blue') ;
1105
+ expect ( options . eq ( 1 ) ) . toEqualOption ( 'green' , ' green') ;
1106
+ expect ( options . eq ( 2 ) ) . toEqualOption ( 'red' , ' red') ;
1087
1107
expect ( options [ 2 ] . selected ) . toEqual ( true ) ;
1088
1108
1089
1109
scope . $apply ( function ( ) {
@@ -1103,23 +1123,23 @@ describe('select', function() {
1103
1123
} ) ;
1104
1124
1105
1125
expect ( element . find ( 'option' ) . length ) . toEqual ( 1 ) ; // because we add special empty option
1106
- expect ( sortedHtml ( element . find ( 'option' ) [ 0 ] ) ) . toEqual ( '<option value="?"></option> ') ;
1126
+ expect ( element . find ( 'option' ) ) . toEqualOption ( '?' , ' ') ;
1107
1127
1108
1128
scope . $apply ( function ( ) {
1109
1129
scope . values . push ( { name :'A' } ) ;
1110
1130
scope . selected = scope . values [ 0 ] ;
1111
1131
} ) ;
1112
1132
1113
1133
expect ( element . find ( 'option' ) . length ) . toEqual ( 1 ) ;
1114
- expect ( sortedHtml ( element . find ( 'option' ) [ 0 ] ) ) . toEqual ( '<option value="0">A</option> ') ;
1134
+ expect ( element . find ( 'option' ) ) . toEqualOption ( '0' , 'A ') ;
1115
1135
1116
1136
scope . $apply ( function ( ) {
1117
1137
scope . values . push ( { name :'B' } ) ;
1118
1138
} ) ;
1119
1139
1120
1140
expect ( element . find ( 'option' ) . length ) . toEqual ( 2 ) ;
1121
- expect ( sortedHtml ( element . find ( 'option' ) [ 0 ] ) ) . toEqual ( '<option value="0">A</option> ') ;
1122
- expect ( sortedHtml ( element . find ( 'option' ) [ 1 ] ) ) . toEqual ( '<option value="1">B</option> ') ;
1141
+ expect ( element . find ( 'option' ) . eq ( 0 ) ) . toEqualOption ( '0' , 'A ') ;
1142
+ expect ( element . find ( 'option' ) . eq ( 1 ) ) . toEqualOption ( '1' , 'B ') ;
1123
1143
} ) ;
1124
1144
1125
1145
@@ -1138,15 +1158,15 @@ describe('select', function() {
1138
1158
} ) ;
1139
1159
1140
1160
expect ( element . find ( 'option' ) . length ) . toEqual ( 2 ) ;
1141
- expect ( sortedHtml ( element . find ( 'option' ) [ 0 ] ) ) . toEqual ( '<option value="0">A</option> ') ;
1142
- expect ( sortedHtml ( element . find ( 'option' ) [ 1 ] ) ) . toEqual ( '<option value="1">B</option> ') ;
1161
+ expect ( element . find ( 'option' ) . eq ( 0 ) ) . toEqualOption ( '0' , 'A ') ;
1162
+ expect ( element . find ( 'option' ) . eq ( 1 ) ) . toEqualOption ( '1' , 'B ') ;
1143
1163
1144
1164
scope . $apply ( function ( ) {
1145
1165
scope . values . pop ( ) ;
1146
1166
} ) ;
1147
1167
1148
1168
expect ( element . find ( 'option' ) . length ) . toEqual ( 1 ) ;
1149
- expect ( sortedHtml ( element . find ( 'option' ) [ 0 ] ) ) . toEqual ( '<option value="0">A</option> ') ;
1169
+ expect ( element . find ( 'option' ) ) . toEqualOption ( '0' , 'A ') ;
1150
1170
1151
1171
scope . $apply ( function ( ) {
1152
1172
scope . values . pop ( ) ;
@@ -1198,9 +1218,9 @@ describe('select', function() {
1198
1218
1199
1219
var options = element . find ( 'option' ) ;
1200
1220
expect ( options . length ) . toEqual ( 3 ) ;
1201
- expect ( sortedHtml ( options [ 0 ] ) ) . toEqual ( '<option value="0">B</option> ') ;
1202
- expect ( sortedHtml ( options [ 1 ] ) ) . toEqual ( '<option value="1">C</option> ') ;
1203
- expect ( sortedHtml ( options [ 2 ] ) ) . toEqual ( '<option value="2">D</option> ') ;
1221
+ expect ( options . eq ( 0 ) ) . toEqualOption ( '0' , 'B ') ;
1222
+ expect ( options . eq ( 1 ) ) . toEqualOption ( '1' , 'C ') ;
1223
+ expect ( options . eq ( 2 ) ) . toEqualOption ( '2' , 'D ') ;
1204
1224
} ) ;
1205
1225
1206
1226
@@ -1244,7 +1264,7 @@ describe('select', function() {
1244
1264
1245
1265
var options = element . find ( 'option' ) ;
1246
1266
expect ( options . length ) . toEqual ( 1 ) ;
1247
- expect ( sortedHtml ( options [ 0 ] ) ) . toEqual ( '<option value=" regularProperty"> visible</option> ') ;
1267
+ expect ( options . eq ( 0 ) ) . toEqualOption ( ' regularProperty' , ' visible') ;
1248
1268
} ) ;
1249
1269
1250
1270
it ( 'should allow expressions over multiple lines' , function ( ) {
@@ -1268,8 +1288,8 @@ describe('select', function() {
1268
1288
1269
1289
var options = element . find ( 'option' ) ;
1270
1290
expect ( options . length ) . toEqual ( 3 ) ;
1271
- expect ( sortedHtml ( options [ 1 ] ) ) . toEqual ( '<option value="0">2</option> ') ;
1272
- expect ( sortedHtml ( options [ 2 ] ) ) . toEqual ( '<option value="1">3</option> ') ;
1291
+ expect ( options . eq ( 1 ) ) . toEqualOption ( '0' , '2 ') ;
1292
+ expect ( options . eq ( 2 ) ) . toEqualOption ( '1' , '3 ') ;
1273
1293
} ) ;
1274
1294
1275
1295
it ( 'should not update selected property of an option element on digest with no change event' ,
@@ -1426,8 +1446,8 @@ describe('select', function() {
1426
1446
1427
1447
var options = element . find ( 'option' ) ;
1428
1448
expect ( options . length ) . toEqual ( 2 ) ;
1429
- expect ( sortedHtml ( options [ 0 ] ) ) . toEqual ( '<option value="0">C</option> ') ;
1430
- expect ( sortedHtml ( options [ 1 ] ) ) . toEqual ( '<option value="1">B</option> ') ;
1449
+ expect ( options . eq ( 0 ) ) . toEqualOption ( '0' , 'C ') ;
1450
+ expect ( options . eq ( 1 ) ) . toEqualOption ( '1' , 'B ') ;
1431
1451
} ) ;
1432
1452
1433
1453
@@ -1447,8 +1467,8 @@ describe('select', function() {
1447
1467
1448
1468
var options = element . find ( 'option' ) ;
1449
1469
expect ( options . length ) . toEqual ( 2 ) ;
1450
- expect ( sortedHtml ( options [ 0 ] ) ) . toEqual ( '<option value="a">C</option> ') ;
1451
- expect ( sortedHtml ( options [ 1 ] ) ) . toEqual ( '<option value="b">B</option> ') ;
1470
+ expect ( options . eq ( 0 ) ) . toEqualOption ( 'a' , 'C ') ;
1471
+ expect ( options . eq ( 1 ) ) . toEqualOption ( 'b' , 'B ') ;
1452
1472
} ) ;
1453
1473
1454
1474
0 commit comments