mirror of
https://github.com/zhigang1992/angular.js.git
synced 2026-01-12 22:45:52 +08:00
test(select): refactor option elements expectations to use toEqualOption matcher
By using a new matcher our tests become less brittle with respect to unimportant extra attributes.
This commit is contained in:
@@ -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('<option value="0">A</option>');
|
||||
expect(sortedHtml(options[1])).toEqual('<option value="1">B</option>');
|
||||
expect(sortedHtml(options[2])).toEqual('<option value="2">C</option>');
|
||||
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('<option value="0">0</option>');
|
||||
expect(sortedHtml(options[1])).toEqual('<option value="1">1</option>');
|
||||
expect(sortedHtml(options[2])).toEqual('<option value="2">2</option>');
|
||||
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('<option value="blue">blue</option>');
|
||||
expect(sortedHtml(options[1])).toEqual('<option value="green">green</option>');
|
||||
expect(sortedHtml(options[2])).toEqual('<option value="red">red</option>');
|
||||
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('<option value="?"></option>');
|
||||
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('<option value="0">A</option>');
|
||||
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('<option value="0">A</option>');
|
||||
expect(sortedHtml(element.find('option')[1])).toEqual('<option value="1">B</option>');
|
||||
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('<option value="0">A</option>');
|
||||
expect(sortedHtml(element.find('option')[1])).toEqual('<option value="1">B</option>');
|
||||
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('<option value="0">A</option>');
|
||||
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('<option value="0">B</option>');
|
||||
expect(sortedHtml(options[1])).toEqual('<option value="1">C</option>');
|
||||
expect(sortedHtml(options[2])).toEqual('<option value="2">D</option>');
|
||||
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('<option value="regularProperty">visible</option>');
|
||||
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('<option value="0">2</option>');
|
||||
expect(sortedHtml(options[2])).toEqual('<option value="1">3</option>');
|
||||
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('<option value="0">C</option>');
|
||||
expect(sortedHtml(options[1])).toEqual('<option value="1">B</option>');
|
||||
expect(options.eq(0)).toEqualOption('0', 'C');
|
||||
expect(options.eq(1)).toEqualOption('1', 'B');
|
||||
});
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user