all files / src/ add-validator.js

100% Statements 23/23
100% Branches 22/22
100% Functions 4/4
100% Lines 14/14
1 branch Ignored     
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22     13× 13×   38× 10× 10×            
import messages from './messages'
import Validators from './validators'
import { toObjectMsg, prepare, memoize } from './helpers'
 
export default function addValidator ({ validator, defaultMessage, defaultMsg }) {
  defaultMsg = toObjectMsg(defaultMsg || defaultMessage) || messages.invalid
 
  return memoize(function (options = {}) {
    let msg = toObjectMsg(options.msg || options.message) || defaultMsg
 
    return prepare(options.if, options.unless, options.allowBlank, function (...args) {
      let result = validator(options, ...args)
      if (typeof result !== 'boolean') {
        return result ? Validators.formatMessage(result) : null
      }
      if (!result) {
        return Validators.formatMessage(msg)
      }
    })
  })
}