valid-props
Version:
Validates an objects properties
92 lines (80 loc) • 2.47 kB
JavaScript
'use strict';
const expect = require('chai').expect,
props = require('../');
describe('Register schema', function () {
it('Register schema: name, schema, optionalSchema', () => {
const validator = props.create().registerSchema('user', {
username: 'string',
password: 'string',
}, {
staySignedIn: 'boolean',
});
validator.validate({
username: 'some-guy',
password: 'Password1',
staySignedIn: true,
}, 'user');
expect(() => validator.validate({
username: 'some-guy',
password: 'Password1',
staySignedIn: true,
}, 'user')).to.not.throw();
});
it('Register schema: object', () => {
const validator = props.create().registerSchema({
name: 'user',
schema: {
username: 'string',
password: 'string',
},
optionalSchema: {
staySignedIn: 'boolean',
}
});
expect(() => validator.validate({
username: 'some-guy',
password: 'Password1',
staySignedIn: true,
}, 'user')).to.not.throw();
});
it('Register schema: array', () => {
const validator = props.create().registerSchema([{
name: 'user',
schema: {
username: 'string',
password: 'string',
},
optionalSchema: {
staySignedIn: 'boolean',
}
}, {
name: 'stats',
schema: {
lastLogin: 'date',
lastPost: 'date',
}
}]);
expect(() => validator.validate({
username: 'some-guy',
password: 'Password1',
staySignedIn: true,
}, 'user')).to.not.throw();
expect(() => validator.validate({
lastLogin: new Date(),
lastPost: '04-20-2015'
}, 'stats')).to.not.throw();
});
it('Throw on invalid schema name', () => {
const validator = props.create().registerSchema({
name: 'easyToTypo',
schema: {
username: 'string',
password: 'string',
}
});
expect(() => validator.validate({
username: 'Rarity',
password: 'g3msz',
}, 'ez2Typo')).to.throw();
});
});