validata-mongo
Version:
MongoDB update `$set` operations
87 lines • 3.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const validata_1 = require("validata");
const object_set_1 = require("../object-set");
describe('example one', () => {
const myCheck = (0, object_set_1.isObjectSet)({
required: (0, validata_1.isString)(),
optional: (0, validata_1.maybeString)(),
child: (0, object_set_1.isObjectSet)({
foo: (0, validata_1.isNumber)({ min: 1 }),
bar: (0, validata_1.asNumber)({ coerceMax: 10 }),
}),
});
it('will pass valid value', () => {
const result = (0, validata_1.check)(myCheck, () => ({
required: 'blue',
child: {
foo: 1,
bar: 2,
},
}));
console.log(JSON.stringify(result));
expect(result).toEqual({ required: 'blue', child: { foo: 1, bar: 2 } });
});
it('will coerce valid value', () => {
const result = (0, validata_1.check)(myCheck, () => ({
required: 'blue',
optional: 'red',
child: {
foo: 20,
bar: '20',
},
}));
console.log(JSON.stringify(result));
expect(result).toEqual({ required: 'blue', optional: 'red', child: { foo: 20, bar: 10 } });
});
it('will pass valid $set deep paths', () => {
const result = (0, validata_1.check)(myCheck, () => ({
required: 'blue',
'child.foo': 3,
}));
console.log(JSON.stringify(result));
expect(result).toEqual({ required: 'blue', 'child.foo': 3 });
});
it('will coerce valid $set deep paths', () => {
const result = (0, validata_1.check)(myCheck, () => ({
required: 'blue',
'child.bar': '73',
}));
console.log(JSON.stringify(result));
expect(result).toEqual({ required: 'blue', 'child.bar': 10 });
});
it('will not allow additional properties', () => {
try {
(0, validata_1.check)(myCheck, () => ({
wow: 'blue',
}));
fail();
}
catch (err) {
console.log(JSON.stringify(err));
expect(Object.assign({}, err)).toEqual(expect.objectContaining({
issues: [
expect.objectContaining({ path: ['wow'], value: 'blue', reason: 'unexpected-property' }),
],
}));
}
});
it('will not allow additional deep properties', () => {
try {
(0, validata_1.check)(myCheck, () => ({
required: 'blue',
'child.unexpected': 17,
}));
fail();
}
catch (err) {
console.log(JSON.stringify(err));
expect(Object.assign({}, err)).toEqual(expect.objectContaining({
issues: [
expect.objectContaining({ path: ['child.unexpected'], value: 17, reason: 'unexpected-property' }),
],
}));
}
});
});
//# sourceMappingURL=one.test.js.map