Something went wrong. Try again.
A Twitter-Bot that is going to increase your followers.
Something went wrong. Try again.
3.3 kB · 95 lines
JavaScript
at master
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596var assert = require('assert');var vows = require('vows');var path = require('path');var fs = require('fs');
var validate = require('../lib/validate').validate;
var revision = 'draft-03';var schemaRoot = path.join(__dirname, '..', revision);var schemaNames = ['schema', 'hyper-schema', 'links', 'json-ref' ];var schemas = {};
schemaNames.forEach(function(name) { var file = path.join(schemaRoot, name); schemas[name] = loadSchema(file);});
schemaNames.forEach(function(name) { var s, n = name+'-nsd', f = path.join(schemaRoot, name); schemas[n] = loadSchema(f); s = schemas[n]; delete s['$schema'];});
function loadSchema(path) { var data = fs.readFileSync(path, 'utf-8'); var schema = JSON.parse(data); return schema;}
function resultIsValid() { return function(result) { assert.isObject(result); //assert.isBoolean(result.valid); assert.equal(typeof(result.valid), 'boolean'); assert.isArray(result.errors); for (var i = 0; i < result.errors.length; i++) { assert.notEqual(result.errors[i], null, 'errors['+i+'] is null'); } }}
function assertValidates(doc, schema) { var context = {};
context[': validate('+doc+', '+schema+')'] = { topic: validate(schemas[doc], schemas[schema]), 'returns valid result': resultIsValid(), 'with valid=true': function(result) { assert.equal(result.valid, true); }, 'and no errors': function(result) { // XXX work-around for bug in vows: [null] chokes it if (result.errors[0] == null) assert.fail('(errors contains null)'); assert.length(result.errors, 0); } };
return context;}
function assertSelfValidates(doc) { var context = {};
context[': validate('+doc+')'] = { topic: validate(schemas[doc]), 'returns valid result': resultIsValid(), 'with valid=true': function(result) { assert.equal(result.valid, true); }, 'and no errors': function(result) { assert.length(result.errors, 0); } };
return context;}
var suite = vows.describe('JSON Schema').addBatch({ 'Core-NSD self-validates': assertSelfValidates('schema-nsd'), 'Core-NSD/Core-NSD': assertValidates('schema-nsd', 'schema-nsd'), 'Core-NSD/Core': assertValidates('schema-nsd', 'schema'),
'Core self-validates': assertSelfValidates('schema'), 'Core/Core': assertValidates('schema', 'schema'),
'Hyper-NSD self-validates': assertSelfValidates('hyper-schema-nsd'), 'Hyper self-validates': assertSelfValidates('hyper-schema'), 'Hyper/Hyper': assertValidates('hyper-schema', 'hyper-schema'), 'Hyper/Core': assertValidates('hyper-schema', 'schema'),
'Links-NSD self-validates': assertSelfValidates('links-nsd'), 'Links self-validates': assertSelfValidates('links'), 'Links/Hyper': assertValidates('links', 'hyper-schema'), 'Links/Core': assertValidates('links', 'schema'),
'Json-Ref self-validates': assertSelfValidates('json-ref'), 'Json-Ref/Hyper': assertValidates('json-ref', 'hyper-schema'), 'Json-Ref/Core': assertValidates('json-ref', 'schema')}).export(module);