Skip to content

Commit

Permalink
refactor: use isYupValidator util fn
Browse files Browse the repository at this point in the history
  • Loading branch information
logaretm committed Jul 18, 2020
1 parent bc6c51c commit 9a4279d
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 6 deletions.
6 changes: 6 additions & 0 deletions packages/core/src/utils/assertions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,9 @@ export function isLocator(value: unknown): value is Locator {
export function isHTMLTag(tag: string) {
return ['input', 'textarea', 'select'].includes(tag);
}

type YupValidator = { validate: (value: any) => Promise<void | boolean> };

export function isYupValidator(value: unknown): value is YupValidator {
return value && isCallable((value as any).validate);
}
4 changes: 2 additions & 2 deletions packages/core/src/utils/rules.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Locator, GenericValidateFunction } from '../types';
import { isLocator } from './assertions';
import { isLocator, isYupValidator } from './assertions';
import { isCallable, isObject } from '../../../shared';

/**
Expand All @@ -20,7 +20,7 @@ export function normalizeRules(rules: any): GenericValidateFunction | Record<str
}

// If its a single validate function or a yup fn, leave as is.
if (isCallable(rules) || isCallable(rules && rules.validate)) {
if (isCallable(rules) || isYupValidator(rules)) {
return rules;
}

Expand Down
8 changes: 4 additions & 4 deletions packages/core/src/validate.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { resolveRule } from './defineRule';
import { isLocator, normalizeRules } from './utils';
import { isLocator, normalizeRules, isYupValidator } from './utils';
import { getConfig } from './config';
import { ValidationResult, GenericValidateFunction } from './types';
import { isCallable, FieldContext } from '../../shared';
Expand Down Expand Up @@ -71,8 +71,8 @@ async function _validate(field: FieldValidationContext, value: any) {
};
}

if (isCallable(field.rules?.validate)) {
return validateWithYup(field, value);
if (isYupValidator(field.rules)) {
return validateFieldWithYup(field, value);
}

const errors: ReturnType<typeof _generateFieldError>[] = [];
Expand Down Expand Up @@ -105,7 +105,7 @@ async function _validate(field: FieldValidationContext, value: any) {
/**
* Handles yup validation
*/
async function validateWithYup(field: FieldValidationContext, value: any) {
async function validateFieldWithYup(field: FieldValidationContext, value: any) {
const result = await field.rules
.validate(value)
.then(() => true)
Expand Down

0 comments on commit 9a4279d

Please sign in to comment.