emcellent-toolkit
Version:
A toolkit for performing neat functions with M/MUMPS data.
192 lines (150 loc) • 5.06 kB
JavaScript
;
var expect = require('chai').expect;
var emcellentToolkit = require('../../index.js');
var fs = require('fs');
var path = require('path');
var filePath = path.join(__dirname, '../sample/XINDEX.m');
var toolkit = require('../../index.js');
var jsDiff = require('diff');
var fileContents;
describe('Basic Entry Routine Testing >', function () {
it('Test Entry Point Null', function (done) {
var results = toolkit.markup(null);
expect(results).to.equal(null);
done();
});
it('Test Entry Point Null/Empty', function (done) {
var results = toolkit.markup(null, {});
expect(results).to.equal(null);
done();
});
it('Test Entry Point Non-String Input', function (done) {
try {
var results = toolkit.markup({
test: 'value'
});
} catch (err) {
expect(err.message).to.equal('input must be a string');
done();
}
});
it('Test Entry Point Bad Arguments Object', function (done) {
try {
var results = toolkit.markup('TEST', true);
} catch (err) {
expect(err.message).to.equal('options must be an object');
done();
}
});
it('Test Entry Point Absent Arguments', function (done) {
var results = toolkit.markup('TEST');
expect(results).to.equal('TEST');
done();
});
});
describe('Routine Parser Testing >', function () {
before(function (done) {
fileContents = fs.readFileSync(filePath, 'utf8');
done();
});
it('Test Entry Point Basic', function (done) {
var results = toolkit.markup(fileContents);
expect(results).to.equal(fileContents);
done();
});
});
describe('Verbose Flag Testing >', function () {
before(function (done) {
fileContents = fs.readFileSync(filePath, 'utf8');
done();
});
it('Negative Test', function (done) {
var results = toolkit.markup(fileContents, {
verbose: false
});
expect(results).to.equal(fileContents);
done();
});
it('Expected Variance', function (done) {
var results = toolkit.markup(fileContents, {
verbose: true
});
//Should be a diff, since markup has changed.
jsDiff.diffLines(fileContents, results, function (err, res) {
for (var i in res) {
if (!res[i].count && (!res[i].added || !res[i].removed)) {
done(new Error('Every line should have a diff.'));
}
}
done();
});
});
});
describe('HTML Output Testing >', function () {
before(function (done) {
fileContents = fs.readFileSync(filePath, 'utf8');
done();
});
it('Negative Test', function (done) {
var results = toolkit.markup(fileContents, {
HTML: false
});
expect(results).to.equal(fileContents);
done();
});
it('Strip HTML and Diff', function (done) {
var results = toolkit.markup(fileContents, {
HTML: true
});
//Use Regex to strip tags.
var breakPattern = /<br\s*[\/]?>/gi;
var closePattern = /<\s*\/\s*\w\s*.*?>/g;
var openPattern = /<\s*\w.*?>/g;
results = results.replace(breakPattern, "\n");
results = results.replace(closePattern, "");
results = results.replace(openPattern, "");
jsDiff.diffLines(fileContents, results, function (err, res) {
for (var i in res) {
if (res[i].count || res[i].added || res[i].removed) {
done(new Error('File diffs inconsistent, check output'));
}
}
done();
});
});
});
describe('HTML/Markup Output Testing >', function () {
before(function (done) {
fileContents = fs.readFileSync(filePath, 'utf8');
done();
});
it('Negative Test', function (done) {
var results = toolkit.markup(fileContents, {
HTML: false,
verbose: false
});
expect(results).to.equal(fileContents);
done();
});
it('HTML/Markup Diff', function (done) {
var results = toolkit.markup(fileContents, {
HTML: true,
verbose: true
});
//Use Regex to strip tags.
var breakPattern = /<br\s*[\/]?>/gi;
var closePattern = /<\s*\/\s*\w\s*.*?>/g;
var openPattern = /<\s*\w.*?>/g;
results = results.replace(breakPattern, "\n");
results = results.replace(closePattern, "");
results = results.replace(openPattern, "");
jsDiff.diffLines(fileContents, results, function (err, res) {
for (var i in res) {
if (!res[i].count && (!res[i].added || !res[i].removed)) {
done(new Error('Every line should have a diff.'));
}
}
done();
});
});
});