dynamicbible/test/data-quality-tests.js
Jeremy Wall (zaphar) 95e424f69f Add some data integrity tests.
* Add new test suite test/data-quality-tests.js
* Make ParseBook exported so I can use it to get data for each book
  This is suboptimal since really the data should be in a look up table
  somewhere but I don't want to tackle that in this change.
* Actually load the json data for each book and test that number
  of chapters exists.
2013-11-16 16:18:36 -05:00

43 lines
1.3 KiB
JavaScript

var requirejs = require('./require-injector').requirejs;
var cjson = require('cjson');
var loadBibleData = function(b, ch) {
return cjson.load('bibles/kjv_strongs/' + b.book + '-' + ch + ".json");
};
var init = function(exports) {
exports['test data quality'] = function(assert, done) {
requirejs(['reference'], function(r) {
for (var i =1; i <= 66; i++) {
var b = {sentinel: true};
var err = {};
var bName = r.BookName(i);
r.ParseBook(bName, b, err);
if (!b.book) {
assert.error("Got undefined for book", bName);
}
if (err.err) {
assert.error(err.err);
continue;
}
for (var j = 1; j <= b.lastchapter; j++) {
var ch = loadBibleData(b, j);
if (!ch) {
assert.err("Got undefined for " + bName + " chapter " + j);
}
assert.equal(ch.ch, j, bName + " chapter " + ch.ch + "==" + j);
}
}
done();
});
};
};
module.exports = {init: init};
if (module == require.main) {
init(exports);
require('test').run(exports);
}