async-validate
Version:
Asynchronous validation for node and the browser
234 lines (206 loc) • 5.75 kB
JavaScript
var expect = require('chai').expect
, Schema = require('../../index');
describe('async-validate:', function() {
var descriptor = {
type: 'object',
fields: {
name: {type: 'string'},
age: {type: 'integer', required: false}
}
}
var string = {
type: 'object',
fields: {
mock: {type: 'string', required: false}
}
}
var func = {
type: 'object',
fields: {
mock: {type: 'function', required: false}
}
}
var regexp = {
type: 'object',
fields: {
mock: {type: 'regexp', required: false}
}
}
var float = {
type: 'object',
fields: {
mock: {type: 'float', required: false}
}
}
var number = {
type: 'object',
fields: {
mock: {type: 'number', required: false}
}
}
var object = {
type: 'object',
fields: {
mock: {type: 'object', required: false}
}
}
var arr = {
type: 'object',
fields: {
mock: {type: 'array', required: false}
}
}
var bool = {
type: 'object',
fields: {
mock: {type: 'boolean', required: false}
}
}
var date = {
type: 'object',
fields: {
mock: {type: 'date', required: false}
}
}
var enumerable = {
type: 'object',
fields: {
mock: {type: 'enum', required: false}
}
}
it('should error on invalid integer field if not required (first/single)',
function(done) {
var schema = new Schema(descriptor);
var source = {age: 'abc', name : 'User'};
var opts = {first : true, single: true};
schema.validate(source, opts, function(err, res) {
expect(res.errors.length).to.eql(1);
expect(res.errors[0].message).to.eql('age is not an integer');
expect(res.errors[0].field).to.eql('age');
done();
});
}
);
it('should allow undefined integer field if not required', function(done) {
var schema = new Schema(descriptor);
var source = {age: undefined, name : 'User'};
var opts = {first : false, single: true};
schema.validate(source, opts, function(err, res) {
expect(err).to.eql(null);
expect(res).to.eql(null);
done();
});
});
it('should allow undefined integer field if not required (first)',
function(done) {
var schema = new Schema(descriptor);
var source = {age: undefined, name : 'User'};
var opts = {first : true, single: true};
schema.validate(source, opts, function(err, res) {
expect(err).to.eql(null);
expect(res).to.eql(null);
done();
});
}
);
it('should allow undefined array field if not required', function(done) {
var schema = new Schema(arr);
var source = {mock: undefined};
var opts = {};
schema.validate(source, opts, function(err, res) {
expect(err).to.eql(null);
expect(res).to.eql(null);
done();
});
});
it('should allow undefined boolean field if not required', function(done) {
var schema = new Schema(bool);
var source = {mock: undefined};
var opts = {};
schema.validate(source, opts, function(err, res) {
expect(err).to.eql(null);
expect(res).to.eql(null);
done();
});
});
it('should allow undefined date field if not required', function(done) {
var schema = new Schema(date);
var source = {mock: undefined};
var opts = {};
schema.validate(source, opts, function(err, res) {
expect(err).to.eql(null);
expect(res).to.eql(null);
done();
});
});
it('should allow undefined enum field if not required', function(done) {
var schema = new Schema(enumerable);
var source = {mock: undefined};
var opts = {};
schema.validate(source, opts, function(err, res) {
expect(err).to.eql(null);
expect(res).to.eql(null);
done();
});
});
it('should allow undefined float field if not required', function(done) {
var schema = new Schema(float);
var source = {mock: undefined};
var opts = {};
schema.validate(source, opts, function(err, res) {
expect(err).to.eql(null);
expect(res).to.eql(null);
done();
});
});
it('should allow undefined function field if not required', function(done) {
var schema = new Schema(func);
var source = {mock: undefined};
var opts = {};
schema.validate(source, opts, function(err, res) {
expect(err).to.eql(null);
expect(res).to.eql(null);
done();
});
});
it('should allow undefined number field if not required', function(done) {
var schema = new Schema(number);
var source = {mock: undefined};
var opts = {};
schema.validate(source, opts, function(err, res) {
expect(err).to.eql(null);
expect(res).to.eql(null);
done();
});
});
it('should allow undefined object field if not required', function(done) {
var schema = new Schema(object);
var source = {mock: undefined};
var opts = {};
schema.validate(source, opts, function(err, res) {
expect(err).to.eql(null);
expect(res).to.eql(null);
done();
});
});
it('should allow undefined regexp field if not required', function(done) {
var schema = new Schema(regexp);
var source = {mock: undefined};
var opts = {};
schema.validate(source, opts, function(err, res) {
expect(err).to.eql(null);
expect(res).to.eql(null);
done();
});
});
it('should allow undefined string field if not required', function(done) {
var schema = new Schema(string);
var source = {mock: undefined};
var opts = {};
schema.validate(source, opts, function(err, res) {
expect(err).to.eql(null);
expect(res).to.eql(null);
done();
});
});
});