All files / validator/yupSource boolean.js

52.63% Statements 10/19
27.78% Branches 5/18
50% Functions 4/8
62.5% Lines 10/16

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58                2x 1x       1x   1x 1x 2x       2x         3x   4x   4x                                                      
import { boolean as locale } from './locale'
import MixedSchema from './mixed'
import inherits from './util/inherits'
import isAbsent from './util/isAbsent'
 
export default BooleanSchema
 
function BooleanSchema(payload) {
  if (!(this instanceof BooleanSchema))
    return typeof payload === 'function'
      ? payload(new BooleanSchema())
      : new BooleanSchema()
 
  MixedSchema.call(this, { type: 'boolean' })
 
  this.withMutation(() => {
    this.transform(function (value) {
      Iif (!this.isType(value)) {
        if (/^(true|1)$/i.test(value)) return true
        if (/^(false|0)$/i.test(value)) return false
      }
      return value
    })
  })
}
 
inherits(BooleanSchema, MixedSchema, {
  _typeCheck(v) {
    Iif (v instanceof Boolean) v = v.valueOf()
 
    return typeof v === 'boolean'
  },
 
  isTrue(message = locale.isValue) {
    return this.test({
      message,
      name: 'is-value',
      exclusive: true,
      params: { value: 'true' },
      test(value) {
        return isAbsent(value) || value === true
      },
    })
  },
 
  isFalse(message = locale.isValue) {
    return this.test({
      message,
      name: 'is-value',
      exclusive: true,
      params: { value: 'false' },
      test(value) {
        return isAbsent(value) || value === false
      },
    })
  },
})