'use strict';
const assert = require('assert');
require('../common');
const isSimpleValidator = require('../../lib/helpers/isSimpleValidator');
const MongooseDocumentArray = require('../../lib/types/documentArray');
describe('isSimpleValidator', function() {
it('empty object', function() {
assert.ok(isSimpleValidator({}));
});
it('object with one primitive attribute', function() {
assert.ok(isSimpleValidator({ a: 1 }));
assert.ok(isSimpleValidator({ a: 1n }));
assert.ok(isSimpleValidator({ a: 'primitive' }));
assert.ok(isSimpleValidator({ a: true }));
});
it('object with one simple array attribute', function() {
assert.ok(!isSimpleValidator({ a: [1] }));
assert.ok(!isSimpleValidator({ a: [1n] }));
assert.ok(!isSimpleValidator({ a: ['primitive'] }));
assert.ok(!isSimpleValidator({ a: ['primitive'] }));
assert.ok(!isSimpleValidator({ a: ['primitive', 'primitive'] }));
assert.ok(!isSimpleValidator({ a: [new Date()] }));
assert.ok(!isSimpleValidator({ a: [true] }));
});
it('object with some native objects', function() {
assert.ok(!isSimpleValidator({ a: /a/g }));
assert.ok(!isSimpleValidator({ a: new Date() }));
});
it('object with one sub object', function() {
assert.ok(!isSimpleValidator({ a: {} }));
assert.ok(!isSimpleValidator({ a: [{}] }));
assert.ok(!isSimpleValidator({ a: { b: 1 } }));
});
it('object with one attribute of type MongooseDocumentArray', function() {
assert.ok(!isSimpleValidator({ a: new MongooseDocumentArray(['a']) }));
assert.ok(!isSimpleValidator({ a: new MongooseDocumentArray([{}]) }));
});
});