UNPKG

shurajs

Version:

A simple and extensible json schema extractor for NodeJS

137 lines (118 loc) 2.98 kB
const shurajs = require('../index') test('invalid string minLength raises error', () => { const schema = { name: { '*': 'string', minLength: 4, onValidationFailed: (schema, value, errorCode) => { throw new Error(errorCode) } } } const model = { name: 'Ada' } try { shurajs.extract(schema, model) throw 'test_failed' } catch (error) { expect(error.message).toBe('min_length') } }) test('invalid item in oneOf raises error', () => { const schema = { weapon: { '*': 'oneOf', items: ['sword', 'axe', 'spear'], onValidationFailed: (schema, value, errorCode) => { throw new Error(errorCode) } } } const model = { weapon: 'bow' } try { shurajs.extract(schema, model) throw 'test_failed' } catch (error) { expect(error.message).toBe('invalid_item') } }) test('non valid negative number raises error', () => { const schema = { age: { '*': 'number', allowNegative: false, onValidationFailed: (schema, value, errorCode) => { throw new Error(errorCode) } } } const model = { age: -1 } try { shurajs.extract(schema, model) throw 'test_failed' } catch (error) { expect(error.message).toBe('is_negative') } }) test('invalid boolean raises error', () => { const schema = { opened: { '*': 'boolean', onValidationFailed: (schema, value, errorCode) => { throw new Error(errorCode) } } } const model = { opened: 'yes' } try { shurajs.extract(schema, model) throw 'test_failed' } catch (error) { expect(error.message).toBe('not_a_boolean') } }) test('array with invalid inner type raises error', () => { const schema = { names: { '*': 'array', innerTypes: [{ '*': 'string' }], onValidationFailed: (schema, value, errorCode) => { throw new Error(errorCode) } } } const model = { names: ['Goku', 12] } try { shurajs.extract(schema, model) throw 'test_failed' } catch (error) { expect(error.message).toBe('inner_type_validation_failed') } }) test('required value raises error', () => { const schema = { name: { '*': 'string', required: true, onValidationFailed: (schema, value, errorCode) => { throw new Error(errorCode) } } } const model = { name: null } try { shurajs.extract(schema, model) throw 'test_failed' } catch (error) { expect(error.message).toBe('required') } })