databridge
Version:
Data bridging software to modularize, automate and schedule the transfer of data between different sources and destinations.
62 lines (60 loc) • 2.65 kB
JavaScript
var async = require('async');
var config = Object.assign({}, require('../config.json'));
config.TESTING = true;
var OutputFile = require('../bin/output-file');
var opt = {
cfg: config,
table: 'MOCK_DATA'
};
var destinations = require('../bin/list-dest')(config);
var colParser = require('../bin/col-parser');
var columns;
var Timer = require('../bin/timer');
var fs = require('fs');
opt.log = require('../bin/log-test')(Object.assign({}, config, opt));
opt.timer = new Timer();
opt.source = 'DB_TEST';
config.logto = 'test';
var response = require('../bin/response')(Object.assign({}, config, opt));
describe('Run all destinations with MOCK_DATA', function() {
it('Overrides opfile without error', function(done) {
opt.opfile = new OutputFile(opt)
opt.opfile.filename = __dirname.replace(/\\/g, '/') + '/assets/MOCK_DATA.txt';
opt.opfile.twoLines((err, data) => {
if (err) return done(new Error(err));
var test2Lines = [
'id_IND\tfirst_name\tlast_name\temail\tgender\tip_address\ttesting_GPA\ttesting_DATE\ttesting_TIMESTAMP\ttesting_DEC',
'1\tEmily\tFisher\tefisher0@google.de\tFemale\t161.31.81.163\t89.64\t2015-11-15\t2016-01-29\t89.62'
];
if (data[0] !== test2Lines[0] || data[1] !== test2Lines[1]) return done(new Error('Data returned by opfile.twoLines() did not match MOCK_DATA.\n' + data.toString() + test2Lines.toString()));
done();
});
});
it('Parsed columns without error', function(done) {
colParser(opt.opfile, function(err, parsedCols) {
if (err) return done(err);
columns = parsedCols;
var cols = ['id', 'first_name', 'last_name', 'email', 'gender', 'ip_address', 'testing_GPA', 'testing_DATE', 'testing_TIMESTAMP', 'testing_DEC'];
response.source.respond('ok', 1000, cols);
done();
});
});
it('Runs every destination', function() {
async.each(destinations, function(dest) {
describe('Checking destination ' + dest, function() {
this.timeout(30000);
var destination = fs.existsSync('./bin/dest/' + dest + '.js') ? require('../bin/dest/' + dest) : require(config.dirs.destinations + dest);
it('Ran destination ' + dest, function(done) {
opt.destination = dest;
destination(opt, columns, function(err, rows, columns) {
if (err) return done(new Error(err));
response.destination.respond('ok', rows, columns);
var res = response.check();
if (res === null) return done();
done(new Error(res));
});
});
});
});
});
});