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

Commit b692360

Browse files
committed
test(ngRequired): add some tests for ngRequired
1 parent b119251 commit b692360

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
@@ -3738,6 +3738,102 @@ describe('input', function() {
37383738
});
37393739
});
37403740

3741+
describe('ngRequired', function() {
3742+
3743+
describe('when the ngRequired expression initially evaluates to true', function() {
3744+
3745+
it('should be valid even if value is 0', function() {
3746+
compileInput('<input type="number" ng-model="value" name="numberInput" ng-required="true" />');
3747+
3748+
changeInputValueTo('0');
3749+
expect(inputElm).toBeValid();
3750+
expect(scope.value).toBe(0);
3751+
expect(scope.form.numberInput.$error.required).toBeFalsy();
3752+
});
3753+
3754+
it('should be valid even if value 0 is set from model', function() {
3755+
compileInput('<input type="number" ng-model="value" name="numberInput" ng-required="true" />');
3756+
3757+
scope.$apply('value = 0');
3758+
3759+
expect(inputElm).toBeValid();
3760+
expect(inputElm.val()).toBe('0');
3761+
expect(scope.form.numberInput.$error.required).toBeFalsy();
3762+
});
3763+
3764+
it('should register required on non boolean elements', function() {
3765+
compileInput('<div ng-model="value" name="numberInput" ng-required="true">');
3766+
3767+
scope.$apply("value = ''");
3768+
3769+
expect(inputElm).toBeInvalid();
3770+
expect(scope.form.numberInput.$error.required).toBeTruthy();
3771+
});
3772+
3773+
it('should change from invalid to valid when the value is empty and the ngRequired expression changes to false', function() {
3774+
compileInput('<input type="number" ng-model="value" name="numberInput" ng-required="ngRequiredExpr" />');
3775+
3776+
scope.$apply('ngRequiredExpr = true');
3777+
3778+
expect(inputElm).toBeInvalid();
3779+
expect(scope.value).toBeUndefined();
3780+
expect(scope.form.numberInput.$error.required).toBeTruthy();
3781+
3782+
scope.$apply('ngRequiredExpr = false');
3783+
3784+
expect(inputElm).toBeValid();
3785+
expect(scope.value).toBeUndefined();
3786+
expect(scope.form.numberInput.$error.required).toBeFalsy();
3787+
});
3788+
});
3789+
3790+
describe('when the ngRequired expression initially evaluates to false', function() {
3791+
3792+
it('should be valid even if value is empty', function() {
3793+
compileInput('<input type="number" ng-model="value" name="numberInput" ng-required="false" />');
3794+
3795+
expect(inputElm).toBeValid();
3796+
expect(scope.value).toBeUndefined();
3797+
expect(scope.form.numberInput.$error.required).toBeFalsy();
3798+
expect(scope.form.numberInput.$error.number).toBeFalsy();
3799+
});
3800+
3801+
it('should be valid if value is non-empty', function() {
3802+
compileInput('<input type="number" ng-model="value" name="numberInput" ng-required="false" />');
3803+
3804+
changeInputValueTo('42');
3805+
expect(inputElm).toBeValid();
3806+
expect(scope.value).toBe(42);
3807+
expect(scope.form.numberInput.$error.required).toBeFalsy();
3808+
});
3809+
3810+
it('should not register required on non boolean elements', function() {
3811+
compileInput('<div ng-model="value" name="numberInput" ng-required="false">');
3812+
3813+
scope.$apply("value = ''");
3814+
3815+
expect(inputElm).toBeValid();
3816+
expect(scope.form.numberInput.$error.required).toBeFalsy();
3817+
});
3818+
3819+
it('should change from valid to invalid when the value is empty and the ngRequired expression changes to true', function() {
3820+
compileInput('<input type="number" ng-model="value" name="numberInput" ng-required="ngRequiredExpr" />');
3821+
3822+
scope.$apply('ngRequiredExpr = false');
3823+
3824+
expect(inputElm).toBeValid();
3825+
expect(scope.value).toBeUndefined();
3826+
expect(scope.form.numberInput.$error.required).toBeFalsy();
3827+
3828+
scope.$apply('ngRequiredExpr = true');
3829+
3830+
expect(inputElm).toBeInvalid();
3831+
expect(scope.value).toBeUndefined();
3832+
expect(scope.form.numberInput.$error.required).toBeTruthy();
3833+
});
3834+
});
3835+
});
3836+
37413837
describe('minlength', function() {
37423838

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

0 commit comments

Comments
 (0)