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` test.each`
input | expected input | expected
${undefined} | ${null}
${null} | ${null}
${''} | ${null}
${'0'} | ${error} ${'0'} | ${error}
${'5105105105105100' /* Mastercard */} | ${null} ${'5105105105105100' /* Mastercard */} | ${null}
${'5105105105105101' /* Mastercard */} | ${error} ${'5105105105105101' /* Mastercard */} | ${error}
@ -47,15 +50,13 @@ describe('Validators', () => {
describe('Range Validator', () => { describe('Range Validator', () => {
test.each` test.each`
input | options | expected input | options | expected
${null} | ${undefined} | ${{ min: 0, max: Infinity }} ${null} | ${undefined} | ${null}
${undefined} | ${undefined} | ${{ min: 0, max: Infinity }} ${undefined} | ${undefined} | ${null}
${''} | ${undefined} | ${{ min: 0, max: Infinity }} ${''} | ${undefined} | ${null}
${0} | ${undefined} | ${null} ${0} | ${undefined} | ${null}
${Infinity} | ${undefined} | ${null} ${Infinity} | ${undefined} | ${null}
${null} | ${{ minimum: 0 }} | ${{ min: 0, max: Infinity }} ${'-1'} | ${{ minimum: 0 }} | ${{ min: 0, max: Infinity }}
${undefined} | ${{ minimum: 0 }} | ${{ min: 0, max: Infinity }} ${-1} | ${{ minimum: 0 }} | ${{ min: 0, max: Infinity }}
${''} | ${{ minimum: 0 }} | ${{ min: 0, max: Infinity }}
${0} | ${{ minimum: 0 }} | ${null}
${2} | ${{ minimum: 3, maximum: 5 }} | ${{ min: 3, max: 5 }} ${2} | ${{ minimum: 3, maximum: 5 }} | ${{ min: 3, max: 5 }}
${3} | ${{ minimum: 3, maximum: 5 }} | ${null} ${3} | ${{ minimum: 3, maximum: 5 }} | ${null}
${5} | ${{ minimum: 3, maximum: 5 }} | ${null} ${5} | ${{ minimum: 3, maximum: 5 }} | ${null}
@ -119,12 +120,6 @@ describe('Validators', () => {
${null} | ${undefined} | ${null} ${null} | ${undefined} | ${null}
${undefined} | ${undefined} | ${null} ${undefined} | ${undefined} | ${null}
${''} | ${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 }} ${'ab'} | ${{ minimumLength: 3 }} | ${{ minlength: 3 }}
${'abp'} | ${{ minimumLength: 3 }} | ${null} ${'abp'} | ${{ minimumLength: 3 }} | ${null}
${'abp'} | ${{ maximumLength: 2 }} | ${{ maxlength: 2 }} ${'abp'} | ${{ maximumLength: 2 }} | ${{ maxlength: 2 }}
@ -154,6 +149,9 @@ describe('Validators', () => {
test.each` test.each`
input | expected input | expected
${undefined} | ${null}
${null} | ${null}
${''} | ${null}
${'http://x'} | ${null} ${'http://x'} | ${null}
${'http:///x'} | ${error} ${'http:///x'} | ${error}
${'https://x'} | ${null} ${'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 => { return (control: AbstractControl): CreditCardError | null => {
if (control.pristine) return null; if (control.pristine) return null;
if (['', null, undefined].indexOf(control.value) > -1) return null;
return isValidCreditCard(String(control.value)) ? null : { creditCardNumber: true }; 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 => { return (control: AbstractControl): RangeError | null => {
if (control.pristine) return 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); const value = Number(control.value);
return getMinError(value, minimum, maximum) || getMaxError(value, maximum, minimum); 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 => { return (control: AbstractControl): StringLengthError | null => {
if (control.pristine) return 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); 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 => { return (control: AbstractControl): UrlError | null => {
if (control.pristine) return null; if (control.pristine) return null;
if (['', null, undefined].indexOf(control.value) > -1) return null;
return isValidUrl(control.value) ? null : { url: true }; return isValidUrl(control.value) ? null : { url: true };
}; };
} }

Loading…
Cancel
Save