Browse Source

feat: return null when input is empty

pull/4025/head
Arman Ozak 6 years ago
parent
commit
38084bf914
  1. 24
      npm/ng-packs/packages/core/src/lib/tests/validators.spec.ts
  2. 2
      npm/ng-packs/packages/core/src/lib/validators/credit-card.validator.ts
  3. 2
      npm/ng-packs/packages/core/src/lib/validators/range.validator.ts
  4. 2
      npm/ng-packs/packages/core/src/lib/validators/string-length.validator.ts
  5. 2
      npm/ng-packs/packages/core/src/lib/validators/url.validator.ts

24
npm/ng-packs/packages/core/src/lib/tests/validators.spec.ts

@ -11,6 +11,9 @@ describe('Validators', () => {
test.each`
input | expected
${undefined} | ${null}
${null} | ${null}
${''} | ${null}
${'0'} | ${error}
${'5105105105105100' /* Mastercard */} | ${null}
${'5105105105105101' /* Mastercard */} | ${error}
@ -47,15 +50,13 @@ describe('Validators', () => {
describe('Range Validator', () => {
test.each`
input | options | expected
${null} | ${undefined} | ${{ min: 0, max: Infinity }}
${undefined} | ${undefined} | ${{ min: 0, max: Infinity }}
${''} | ${undefined} | ${{ min: 0, max: Infinity }}
${null} | ${undefined} | ${null}
${undefined} | ${undefined} | ${null}
${''} | ${undefined} | ${null}
${0} | ${undefined} | ${null}
${Infinity} | ${undefined} | ${null}
${null} | ${{ minimum: 0 }} | ${{ min: 0, max: Infinity }}
${undefined} | ${{ minimum: 0 }} | ${{ min: 0, max: Infinity }}
${''} | ${{ minimum: 0 }} | ${{ min: 0, max: Infinity }}
${0} | ${{ minimum: 0 }} | ${null}
${'-1'} | ${{ minimum: 0 }} | ${{ min: 0, max: Infinity }}
${-1} | ${{ minimum: 0 }} | ${{ min: 0, max: Infinity }}
${2} | ${{ minimum: 3, maximum: 5 }} | ${{ min: 3, max: 5 }}
${3} | ${{ minimum: 3, maximum: 5 }} | ${null}
${5} | ${{ minimum: 3, maximum: 5 }} | ${null}
@ -119,12 +120,6 @@ describe('Validators', () => {
${null} | ${undefined} | ${null}
${undefined} | ${undefined} | ${null}
${''} | ${undefined} | ${null}
${null} | ${{ minimumLength: 0 }} | ${null}
${undefined} | ${{ minimumLength: 0 }} | ${null}
${''} | ${{ minimumLength: 0 }} | ${null}
${null} | ${{ minimumLength: 3 }} | ${{ minlength: 3 }}
${undefined} | ${{ minimumLength: 3 }} | ${{ minlength: 3 }}
${''} | ${{ minimumLength: 3 }} | ${{ minlength: 3 }}
${'ab'} | ${{ minimumLength: 3 }} | ${{ minlength: 3 }}
${'abp'} | ${{ minimumLength: 3 }} | ${null}
${'abp'} | ${{ maximumLength: 2 }} | ${{ maxlength: 2 }}
@ -154,6 +149,9 @@ describe('Validators', () => {
test.each`
input | expected
${undefined} | ${null}
${null} | ${null}
${''} | ${null}
${'http://x'} | ${null}
${'http:///x'} | ${error}
${'https://x'} | ${null}

2
npm/ng-packs/packages/core/src/lib/validators/credit-card.validator.ts

@ -8,6 +8,8 @@ export function validateCreditCard(): ValidatorFn {
return (control: AbstractControl): CreditCardError | null => {
if (control.pristine) return null;
if (['', null, undefined].indexOf(control.value) > -1) return null;
return isValidCreditCard(String(control.value)) ? null : { creditCardNumber: true };
};
}

2
npm/ng-packs/packages/core/src/lib/validators/range.validator.ts

@ -14,7 +14,7 @@ export function validateRange({ maximum = Infinity, minimum = 0 }: RangeOptions
return (control: AbstractControl): RangeError | null => {
if (control.pristine) return null;
if (['', null, undefined].indexOf(control.value) > -1) return { min: minimum, max: maximum };
if (['', null, undefined].indexOf(control.value) > -1) return null;
const value = Number(control.value);
return getMinError(value, minimum, maximum) || getMaxError(value, maximum, minimum);

2
npm/ng-packs/packages/core/src/lib/validators/string-length.validator.ts

@ -17,7 +17,7 @@ export function validateStringLength({
return (control: AbstractControl): StringLengthError | null => {
if (control.pristine) return null;
if (!control.value && minimumLength) return { minlength: minimumLength };
if (['', null, undefined].indexOf(control.value) > -1) return null;
const value = String(control.value);

2
npm/ng-packs/packages/core/src/lib/validators/url.validator.ts

@ -8,6 +8,8 @@ export function validateUrl(): ValidatorFn {
return (control: AbstractControl): UrlError | null => {
if (control.pristine) return null;
if (['', null, undefined].indexOf(control.value) > -1) return null;
return isValidUrl(control.value) ? null : { url: true };
};
}

Loading…
Cancel
Save