livr-extra-rules
Version:
Extra rules for LIVR Validator
61 lines (47 loc) • 1.9 kB
JavaScript
const fs = require('fs');
const LIVR = require('livr');
const util = require('util');
const test = require('ava');
const extraRules = require('../src');
LIVR.Validator.registerDefaultRules(extraRules);
iterateTestData('test_suite/positive', function(data) {
test(`LIVR positive tests: ${data.name}`, t => {
const validator = new LIVR.Validator(data.rules);
const output = validator.validate(data.input);
const errors = validator.getErrors();
t.true(
!errors,
'Validator should contain no errors. The error was ' + util.inspect(errors)
);
t.deepEqual(output, data.output, 'Output should contain correct data');
});
});
iterateTestData('test_suite/negative', function(data) {
test(`LIVR negative tests: ${data.name}`, t => {
const validator = new LIVR.Validator(data.rules);
const output = validator.validate(data.input);
t.true(!output, 'Output should be false');
t.deepEqual(validator.getErrors(), data.errors, 'Validator should contain errors');
});
});
function iterateTestData(path, cb) {
const rootPath = __dirname + '/' + path;
console.log(`ITERATE: ${rootPath}`);
const casesDirs = fs.readdirSync(rootPath);
for (const caseDir of casesDirs) {
const caseFiles = fs.readdirSync(rootPath + '/' + caseDir);
const caseData = { name: caseDir };
for (const file of caseFiles) {
const fullName = rootPath + '/' + caseDir + '/' + file;
let data = {};
if ( fullName.match(/\.json$/) ) {
const json = fs.readFileSync(fullName);
data = JSON.parse(json);
} else if ( fullName.match(/\.js$/) ) {
data = require(fullName);
}
caseData[file.replace(/\.js(on)?$/, '')] = data;
}
cb(caseData);
}
}