podeng
Version:
Simple JSON value normalization to make everything gone right.
75 lines (60 loc) • 1.56 kB
JavaScript
'use strict';
/* eslint-disable */
const blueprint = require('../blueprint')
const types = require('../types')
test('Should be able to use boolean type', () => {
const Obj = blueprint.object({
val1: types.bool,
val2: types.bool(['Yes', 'Yeah']),
})
const Obj2 = blueprint.object({
val1: types.bool(['Yes', 'Yeah'], ['No', 'Not']),
val2: types.bool({
invalidList: ['No', 'Nope'],
caseSensitive: false,
}),
})
const Obj3 = blueprint.object({
val1: types.bool,
val2: types.bool(['Yes', 'Yeah'], { normalizeNil: true }),
val3: types.bool({ normalizeNil: true }),
})
const throwError = () => {
blueprint.object({
value: types.bool([]),
})
}
expect(Obj({ val1: true, val2: 'Yes' })).toEqual({
val1: true,
val2: true,
})
expect(Obj({ val1: false, val2: 'No' })).toEqual({
val1: false,
val2: false,
})
expect(Obj2({ val1: 'Yeah', val2: 'sure' })).toEqual({
val1: true,
val2: true,
})
expect(Obj3({ val1: 'not nil', val2: 'Yes', val3: 'not nil' })).toEqual({
val1: null,
val2: true,
val3: true,
})
expect(Obj3({ val1: true, val2: 'Yeah', val3: 123 })).toEqual({
val1: true,
val2: true,
val3: true,
})
expect(Obj3({ val1: false, val2: 'foo', val3: null })).toEqual({
val1: false,
val2: false,
val3: false,
})
expect(Obj3({ val1: true, val2: 'bar' })).toEqual({
val1: true,
val2: false,
val3: false,
})
expect(throwError).toThrow(TypeError('Invalid setup for "bool" type'))
})