gracenode-staticdata
Version:
staticdata module for gracenode framework
102 lines (86 loc) • 3.16 kB
JavaScript
var assert = require('assert');
var gn = require('gracenode');
var prefix = require('./prefix');
describe('gracenode staticdata module ->', function () {
console.log('***Notice: This test requires gracenode installed in the same directory as this module.');
it('Can load a CSV file', function (done) {
gn.setConfigPath(prefix + 'gracenode-staticdata/test/configs/');
gn.setConfigFiles(['staticdata.json']);
gn.use('gracenode-staticdata');
gn.on('setup.config', function () {
var sd = gn.config.getOne('modules.gracenode-staticdata');
if (sd.path.indexOf('node_modules') === -1) {
sd.path = prefix + sd.path;
}
});
gn.setup(function (error) {
assert.equal(error, undefined);
assert(gn.staticdata.create('map'));
done();
});
});
it('Can get a second element from an array made from a CSV file', function () {
var sd = gn.staticdata.create('map');
var usa = sd.getOne(1);
assert.equal(usa.value, '日本');
});
it('Can get all elements from an array made from a CSV file', function () {
var sd = gn.staticdata.create('map');
var list = sd.getAll();
var names = ['US', 'JA', 'RU', 'CN'];
for (var i = 0, len = list.length; i < len; i++) {
assert.equal(list[i].name, names[i]);
}
});
it('Can get a data object by indexed column from a CSV file', function () {
var sd = gn.staticdata.create('map');
var usa = sd.getOneByIndex('name', 'US');
assert.equal(usa.value, 'United States of America,US,USA');
});
it('Can get all data objects by indexed column from a CSV file', function () {
var sd = gn.staticdata.create('map');
var map = sd.getAllByIndexName('name');
var names = ['US', 'JA', 'RU', 'CN'];
var i = 0;
for (var name in map) {
assert.equal(name, names[i]);
i++;
}
});
it('Does not throw an exception when accessing none-indexed map data', function () {
var sd = gn.staticdata.create('map');
var map = sd.getAllByIndexName('dummy');
assert.equal(map, null);
});
it('Can get value property only', function () {
var sd = gn.staticdata.create('map');
var list = sd.getAll(['value']);
for (var i = 0, len = list.length; i < len; i++) {
assert(list[i].value);
assert.equal(list[i].name, undefined);
}
});
it('Can remove BOM (byte order mark) from CSV files', function () {
var sd = gn.staticdata.create('sample');
var data = sd.getOneByIndex('level', 1);
assert(data);
});
it('Can inflate a staticdata object with another', function () {
var parent = gn.staticdata.create('parent');
var child = gn.staticdata.create('child');
var success = parent.inflate(child, 'size', 'size');
var logger = gn.log.create('test');
var bob = parent.getOneByIndex('name', 'Bob');
assert.equal(success, true);
assert.equal(bob.name, 'Bob');
assert.equal(bob.size.size, 10);
assert.equal(bob.size.name, 'Regular');
assert.equal(bob.size.id, 3);
});
it('Can fail to inflate staticdata object with none-indexed child staticdata', function () {
var sample = gn.staticdata.create('sample');
var tab = gn.staticdata.create('tab');
var success = sample.inflate(tab, 'id', 'id');
assert.equal(success, false);
});
});