diff --git a/test/ng/directive/selectSpec.js b/test/ng/directive/selectSpec.js
index bf16744c..90eb9509 100644
--- a/test/ng/directive/selectSpec.js
+++ b/test/ng/directive/selectSpec.js
@@ -38,8 +38,28 @@ describe('select', function() {
};
return equals(expectedValues, actualValues);
+ },
+
+ toEqualOption: function(value, text, label) {
+ var errors = [];
+ if (this.actual.attr('value') !== value) {
+ errors.push('Expected option value "' + this.actual.attr('value') + '" to equal "' + value + '"');
+ }
+ if (text && this.actual.text() !== text) {
+ errors.push('Expected option value "' + this.actual.attr('value') + '" to equal "' + value + '"');
+ }
+ if (label && this.actual.attr('label') !== label) {
+ errors.push('Expected option value "' + this.actual.attr('value') + '" to equal "' + value + '"');
+ }
+
+ this.message = function() {
+ return errors.join('\n');
+ };
+
+ return errors.length === 0;
}
});
+
});
@@ -574,9 +594,9 @@ describe('select', function() {
var options = element.find('option');
expect(options.length).toEqual(3);
- expect(sortedHtml(options[0])).toEqual('');
- expect(sortedHtml(options[1])).toEqual('');
- expect(sortedHtml(options[2])).toEqual('');
+ expect(options.eq(0)).toEqualOption('0', 'A');
+ expect(options.eq(1)).toEqualOption('1', 'B');
+ expect(options.eq(2)).toEqualOption('2', 'C');
});
it('should render zero as a valid display value', function() {
@@ -589,9 +609,9 @@ describe('select', function() {
var options = element.find('option');
expect(options.length).toEqual(3);
- expect(sortedHtml(options[0])).toEqual('');
- expect(sortedHtml(options[1])).toEqual('');
- expect(sortedHtml(options[2])).toEqual('');
+ expect(options.eq(0)).toEqualOption('0', '0');
+ expect(options.eq(1)).toEqualOption('1', '1');
+ expect(options.eq(2)).toEqualOption('2', '2');
});
@@ -608,9 +628,9 @@ describe('select', function() {
var options = element.find('option');
expect(options.length).toEqual(3);
- expect(sortedHtml(options[0])).toEqual('');
- expect(sortedHtml(options[1])).toEqual('');
- expect(sortedHtml(options[2])).toEqual('');
+ expect(options.eq(0)).toEqualOption('blue', 'blue');
+ expect(options.eq(1)).toEqualOption('green', 'green');
+ expect(options.eq(2)).toEqualOption('red', 'red');
expect(options[2].selected).toEqual(true);
scope.$apply(function() {
@@ -630,7 +650,7 @@ describe('select', function() {
});
expect(element.find('option').length).toEqual(1); // because we add special empty option
- expect(sortedHtml(element.find('option')[0])).toEqual('');
+ expect(element.find('option')).toEqualOption('?','');
scope.$apply(function() {
scope.values.push({name:'A'});
@@ -638,15 +658,15 @@ describe('select', function() {
});
expect(element.find('option').length).toEqual(1);
- expect(sortedHtml(element.find('option')[0])).toEqual('');
+ expect(element.find('option')).toEqualOption('0', 'A');
scope.$apply(function() {
scope.values.push({name:'B'});
});
expect(element.find('option').length).toEqual(2);
- expect(sortedHtml(element.find('option')[0])).toEqual('');
- expect(sortedHtml(element.find('option')[1])).toEqual('');
+ expect(element.find('option').eq(0)).toEqualOption('0', 'A');
+ expect(element.find('option').eq(1)).toEqualOption('1', 'B');
});
@@ -665,15 +685,15 @@ describe('select', function() {
});
expect(element.find('option').length).toEqual(2);
- expect(sortedHtml(element.find('option')[0])).toEqual('');
- expect(sortedHtml(element.find('option')[1])).toEqual('');
+ expect(element.find('option').eq(0)).toEqualOption('0', 'A');
+ expect(element.find('option').eq(1)).toEqualOption('1', 'B');
scope.$apply(function() {
scope.values.pop();
});
expect(element.find('option').length).toEqual(1);
- expect(sortedHtml(element.find('option')[0])).toEqual('');
+ expect(element.find('option')).toEqualOption('0', 'A');
scope.$apply(function() {
scope.values.pop();
@@ -725,9 +745,9 @@ describe('select', function() {
var options = element.find('option');
expect(options.length).toEqual(3);
- expect(sortedHtml(options[0])).toEqual('');
- expect(sortedHtml(options[1])).toEqual('');
- expect(sortedHtml(options[2])).toEqual('');
+ expect(options.eq(0)).toEqualOption('0', 'B');
+ expect(options.eq(1)).toEqualOption('1', 'C');
+ expect(options.eq(2)).toEqualOption('2', 'D');
});
@@ -771,7 +791,7 @@ describe('select', function() {
var options = element.find('option');
expect(options.length).toEqual(1);
- expect(sortedHtml(options[0])).toEqual('');
+ expect(options.eq(0)).toEqualOption('regularProperty', 'visible');
});
it('should allow expressions over multiple lines', function() {
@@ -795,8 +815,8 @@ describe('select', function() {
var options = element.find('option');
expect(options.length).toEqual(3);
- expect(sortedHtml(options[1])).toEqual('');
- expect(sortedHtml(options[2])).toEqual('');
+ expect(options.eq(1)).toEqualOption('0', '2');
+ expect(options.eq(2)).toEqualOption('1', '3');
});
it('should not update selected property of an option element on digest with no change event',
@@ -953,8 +973,8 @@ describe('select', function() {
var options = element.find('option');
expect(options.length).toEqual(2);
- expect(sortedHtml(options[0])).toEqual('');
- expect(sortedHtml(options[1])).toEqual('');
+ expect(options.eq(0)).toEqualOption('0', 'C');
+ expect(options.eq(1)).toEqualOption('1', 'B');
});