aboutsummaryrefslogtreecommitdiffstats
path: root/test/ng/directive/selectSpec.js
diff options
context:
space:
mode:
authorPete Bacon Darwin2013-09-25 12:49:55 +0100
committerVojta Jina2013-10-07 16:47:51 -0700
commitb56b21a898b3c77589a48a290271f9dc181dafe8 (patch)
treee4d62493edf0497f9ea57ff202e219f485bd3808 /test/ng/directive/selectSpec.js
parent2b5ce84fca7b41fca24707e163ec6af84bc12e83 (diff)
downloadangular.js-b56b21a898b3c77589a48a290271f9dc181dafe8.tar.bz2
fix(input): `false` is no longer an empty value by default
`checkboxInputType` and `ngList` directives need to have special logic for whether they are empty or not. Previously this had been hard coded into their own directives or the `ngRequired` directive. This made it difficult to handle these special cases. This change factors out the question of whether an input is empty into a method `$isEmpty` on the `ngModelController`. The `ngRequired` directive now uses this method when testing for validity and directives, such as `checkbox` or `ngList` can override it to apply logic specific to their needs. Closes #3490, #3658, #2594
Diffstat (limited to 'test/ng/directive/selectSpec.js')
-rw-r--r--test/ng/directive/selectSpec.js25
1 files changed, 25 insertions, 0 deletions
diff --git a/test/ng/directive/selectSpec.js b/test/ng/directive/selectSpec.js
index 85acba19..ac0cc70d 100644
--- a/test/ng/directive/selectSpec.js
+++ b/test/ng/directive/selectSpec.js
@@ -1213,6 +1213,31 @@ describe('select', function() {
});
expect(element).toBeValid();
});
+
+
+ it('should allow falsy values as values', function() {
+ createSelect({
+ 'ng-model': 'value',
+ 'ng-options': 'item.value as item.name for item in values',
+ 'ng-required': 'required'
+ }, true);
+
+ scope.$apply(function() {
+ scope.values = [{name: 'True', value: true}, {name: 'False', value: false}];
+ scope.required = false;
+ });
+
+ element.val('1');
+ browserTrigger(element, 'change');
+ expect(element).toBeValid();
+ expect(scope.value).toBe(false);
+
+ scope.$apply(function() {
+ scope.required = true;
+ });
+ expect(element).toBeValid();
+ expect(scope.value).toBe(false);
+ });
});
});