UNPKG

jaywalk

Version:
83 lines 2.9 kB
"use strict"; var test = require('blue-tape'); var index_1 = require('../index'); test('object', function (t) { t.test('properties', function (t) { var schema = new index_1.Types.Object({ properties: { username: new index_1.Types.String() } }); var validate = index_1.compile(schema); t.test('accept valid properties', function (t) { return validate({ username: 'hello' }); }); t.test('error on invalid properties', function (t) { t.plan(2); return validate({ username: 123 }) .catch(function (err) { t.equal(err.errors.length, 1); t.deepEqual(err.errors[0].path, ['username']); }); }); }); t.test('property types', function (t) { var schema = new index_1.Types.Object({ propertyTypes: [ [ new index_1.Types.String({ pattern: '^[0-9]+$' }), new index_1.Types.String() ] ] }); var validate = index_1.compile(schema); t.test('accept valid property types', function (t) { return validate({ '123': '123', '456': '456' }) .then(function (res) { t.equal(res[123], '123'); t.equal(res[456], '456'); }); }); t.test('error on bad property type check', function (t) { t.plan(2); return validate({ '123': 123 }) .catch(function (err) { t.equal(err.errors.length, 1); t.deepEqual(err.errors[0].path, ['123']); }); }); }); t.test('key count', function (t) { var schema = new index_1.Types.Object({ propertyTypes: [ [ new index_1.Types.Any(), new index_1.Types.Number() ] ], minKeys: 2 }); var validate = index_1.compile(schema); t.test('is structural type', function (t) { t.throws(function () { return index_1.assert(schema, { a: 123 }); }); t.equal(index_1.assert(schema, { a: 123, b: 456 }), 6); t.end(); }); t.test('accept valid property types', function (t) { return validate({ a: 123, b: 456 }) .then(function (res) { t.equal(res.a, 123); t.equal(res.b, 456); }); }); t.test('error on bad property count', function (t) { t.plan(2); return validate({ a: 123 }) .catch(function (err) { t.equal(err.errors.length, 1); t.deepEqual(err.errors[0].path, []); }); }); }); }); //# sourceMappingURL=object.spec.js.map