Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

Commit 2230fb4

Browse files
gkalpakIgorMinar
authored andcommitted
test(ngRequired): add some tests for ngRequired
Closes #9316
1 parent 01f50e1 commit 2230fb4

File tree

1 file changed

+96
-0
lines changed

1 file changed

+96
-0
lines changed

test/ng/directive/inputSpec.js

+96
Original file line numberDiff line numberDiff line change
@@ -3849,6 +3849,102 @@ describe('input', function() {
38493849
});
38503850
});
38513851

3852+
describe('ngRequired', function() {
3853+
3854+
describe('when the ngRequired expression initially evaluates to true', function() {
3855+
3856+
it('should be valid even if value is 0', function() {
3857+
compileInput('<input type="number" ng-model="value" name="numberInput" ng-required="true" />');
3858+
3859+
changeInputValueTo('0');
3860+
expect(inputElm).toBeValid();
3861+
expect(scope.value).toBe(0);
3862+
expect(scope.form.numberInput.$error.required).toBeFalsy();
3863+
});
3864+
3865+
it('should be valid even if value 0 is set from model', function() {
3866+
compileInput('<input type="number" ng-model="value" name="numberInput" ng-required="true" />');
3867+
3868+
scope.$apply('value = 0');
3869+
3870+
expect(inputElm).toBeValid();
3871+
expect(inputElm.val()).toBe('0');
3872+
expect(scope.form.numberInput.$error.required).toBeFalsy();
3873+
});
3874+
3875+
it('should register required on non boolean elements', function() {
3876+
compileInput('<div ng-model="value" name="numberInput" ng-required="true">');
3877+
3878+
scope.$apply("value = ''");
3879+
3880+
expect(inputElm).toBeInvalid();
3881+
expect(scope.form.numberInput.$error.required).toBeTruthy();
3882+
});
3883+
3884+
it('should change from invalid to valid when the value is empty and the ngRequired expression changes to false', function() {
3885+
compileInput('<input type="number" ng-model="value" name="numberInput" ng-required="ngRequiredExpr" />');
3886+
3887+
scope.$apply('ngRequiredExpr = true');
3888+
3889+
expect(inputElm).toBeInvalid();
3890+
expect(scope.value).toBeUndefined();
3891+
expect(scope.form.numberInput.$error.required).toBeTruthy();
3892+
3893+
scope.$apply('ngRequiredExpr = false');
3894+
3895+
expect(inputElm).toBeValid();
3896+
expect(scope.value).toBeUndefined();
3897+
expect(scope.form.numberInput.$error.required).toBeFalsy();
3898+
});
3899+
});
3900+
3901+
describe('when the ngRequired expression initially evaluates to false', function() {
3902+
3903+
it('should be valid even if value is empty', function() {
3904+
compileInput('<input type="number" ng-model="value" name="numberInput" ng-required="false" />');
3905+
3906+
expect(inputElm).toBeValid();
3907+
expect(scope.value).toBeUndefined();
3908+
expect(scope.form.numberInput.$error.required).toBeFalsy();
3909+
expect(scope.form.numberInput.$error.number).toBeFalsy();
3910+
});
3911+
3912+
it('should be valid if value is non-empty', function() {
3913+
compileInput('<input type="number" ng-model="value" name="numberInput" ng-required="false" />');
3914+
3915+
changeInputValueTo('42');
3916+
expect(inputElm).toBeValid();
3917+
expect(scope.value).toBe(42);
3918+
expect(scope.form.numberInput.$error.required).toBeFalsy();
3919+
});
3920+
3921+
it('should not register required on non boolean elements', function() {
3922+
compileInput('<div ng-model="value" name="numberInput" ng-required="false">');
3923+
3924+
scope.$apply("value = ''");
3925+
3926+
expect(inputElm).toBeValid();
3927+
expect(scope.form.numberInput.$error.required).toBeFalsy();
3928+
});
3929+
3930+
it('should change from valid to invalid when the value is empty and the ngRequired expression changes to true', function() {
3931+
compileInput('<input type="number" ng-model="value" name="numberInput" ng-required="ngRequiredExpr" />');
3932+
3933+
scope.$apply('ngRequiredExpr = false');
3934+
3935+
expect(inputElm).toBeValid();
3936+
expect(scope.value).toBeUndefined();
3937+
expect(scope.form.numberInput.$error.required).toBeFalsy();
3938+
3939+
scope.$apply('ngRequiredExpr = true');
3940+
3941+
expect(inputElm).toBeInvalid();
3942+
expect(scope.value).toBeUndefined();
3943+
expect(scope.form.numberInput.$error.required).toBeTruthy();
3944+
});
3945+
});
3946+
});
3947+
38523948
describe('minlength', function() {
38533949

38543950
it('should invalidate values that are shorter than the given minlength', function() {

0 commit comments

Comments
 (0)