aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/ng/directive/inputSpec.js33
-rw-r--r--test/ng/directive/selectSpec.js25
2 files changed, 56 insertions, 2 deletions
diff --git a/test/ng/directive/inputSpec.js b/test/ng/directive/inputSpec.js
index facc2b80..c94eb9b8 100644
--- a/test/ng/directive/inputSpec.js
+++ b/test/ng/directive/inputSpec.js
@@ -998,6 +998,16 @@ describe('input', function() {
expect(scope.list).toEqual([]);
});
+ it('should be invalid if required and empty', function() {
+ compileInput('<input type="text" ng-list ng-model="list" required>');
+ changeInputValueTo('');
+ expect(scope.list).toBeUndefined();
+ expect(inputElm).toBeInvalid();
+ changeInputValueTo('a,b');
+ expect(scope.list).toEqual(['a','b']);
+ expect(inputElm).toBeValid();
+ });
+
it('should allow custom separator', function() {
compileInput('<input type="text" ng-model="list" ng-list=":" />');
@@ -1090,10 +1100,29 @@ describe('input', function() {
it('should set $invalid when model undefined', function() {
- compileInput('<input type="text" ng-model="notDefiend" required />');
+ compileInput('<input type="text" ng-model="notDefined" required />');
scope.$digest();
expect(inputElm).toBeInvalid();
- })
+ });
+
+
+ it('should allow `false` as a valid value when the input type is not "checkbox"', function() {
+ compileInput('<input type="radio" ng-value="true" ng-model="answer" required />' +
+ '<input type="radio" ng-value="false" ng-model="answer" required />');
+
+ scope.$apply();
+ expect(inputElm).toBeInvalid();
+
+ scope.$apply(function() {
+ scope.answer = true;
+ });
+ expect(inputElm).toBeValid();
+
+ scope.$apply(function() {
+ scope.answer = false;
+ });
+ expect(inputElm).toBeValid();
+ });
});
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);
+ });
});
});