content-generator
Version:
Easy template generator to manage and save templates by key and languagecode.
305 lines (252 loc) • 9.72 kB
JavaScript
;
const assert = require('assertthat');
const fs = require('fs');
const ctg = require('../lib');
const dropDatabase = require('./dropDatabase');
const testObject = require('./testObject.json');
let templateId;
describe('Test Module Content-Generator...', () => {
before(() => dropDatabase((err) => {
if (err) {
throw err;
}
return true;
}));
describe('.... partial createTemplate ...', () => {
it('... is of type function', (done) => {
assert.that(ctg.createTemplate).is.ofType('function');
done();
});
it('... must callback an error when html is not defined', (done) => {
ctg.createTemplate({}, (err) => {
assert.that(err).is.equalTo('Function is called without html content');
done();
});
});
it('... must callback an error when key is not defined', (done) => {
ctg.createTemplate({ html: '<div>Test</div>' }, (err) => {
assert.that(err).is.equalTo('Function is called without templatekey');
done();
});
});
it('... must callback an error when language is not defined', (done) => {
ctg.createTemplate({ html: '<div>Test</div>', key: 'TESTTEMPLATE' }, (err) => {
assert.that(err).is.equalTo('Function is called without language');
done();
});
});
it('... must callback an error when subject is not defined', (done) => {
ctg.createTemplate({ html: '<div>Test</div>', lang: 'en_GB', key: 'TESTTEMPLATE' }, (err) => {
assert.that(err).is.equalTo('Function is called without subject');
done();
});
});
it('... must callback a id when template is saved', (done) => {
ctg.createTemplate({ html: '<div>Test</div>', lang: 'en_GB', subject: 'Test', key: 'TESTTEMPLATE' }, (err, res) => {
if (err) {
throw err;
}
assert.that(res).is.not.undefined();
templateId = res.toString();
done();
});
});
it('... must callback a error when the key language combination is already exist in the system', (done) => {
ctg.createTemplate({ html: '<div>Test</div>', lang: 'en_GB', subject: 'Test', key: 'TESTTEMPLATE' }, (err) => {
assert.that(err).is.equalTo('A template with this key and language combination already exist in the system');
done();
});
});
});
describe('.... partial updateTemplate ...', () => {
it('... is of type function', (done) => {
assert.that(ctg.updateTemplate).is.ofType('function');
done();
});
it('... callbacks an error when obj is not defined', (done) => {
ctg.updateTemplate(undefined, (err) => {
assert.that(err).is.equalTo('Function is called without object');
done();
});
});
it('... callbacks an error when obj.key is not defined', (done) => {
ctg.updateTemplate({}, (err) => {
assert.that(err).is.equalTo('Function is called without key');
done();
});
});
it('... callbacks an error when obj.key is not defined', (done) => {
ctg.updateTemplate({ key: 'TESTTEMPLATE' }, (err) => {
assert.that(err).is.equalTo('Function is called without language');
done();
});
});
it('... callbacks true when template is patched', (done) => {
const obj = { key: 'TESTTEMPLATE', lang: 'en_GB', html: '<span>Hello World</span>' };
ctg.updateTemplate(obj, (err, res) => {
if (err) {
throw err;
}
assert.that(res).is.true();
done();
});
});
});
describe('.... partil getTemplateById ...', () => {
it('... callbacks an error when id is not defined', (done) => {
ctg.getTemplateById(undefined, (err) => {
assert.that(err).is.equalTo('Function is called without id');
done();
});
});
it('... callbacks a object with the template', (done) => {
ctg.getTemplateById(templateId, (err, res) => {
if (err) {
throw err;
}
assert.that(res.html).is.equalTo('<span>Hello World</span>');
assert.that(res.key).is.equalTo('TESTTEMPLATE');
assert.that(res).is.ofType('object');
done();
});
});
});
describe('.... partial deleteTemplate ...', () => {
it('... is of type function', (done) => {
assert.that(ctg.deleteTemplate).is.ofType('function');
done();
});
it('... callbacks an error when obj is not defined', (done) => {
ctg.deleteTemplate(undefined, (err) => {
assert.that(err).is.equalTo('Function is called without obj');
done();
});
});
it('... callbacks an error when obj.key is not defined', (done) => {
ctg.deleteTemplate({}, (err) => {
assert.that(err).is.equalTo('Function is called without obj.key');
done();
});
});
it('... callbacks an error when obj.lang is not defined', (done) => {
ctg.deleteTemplate({ key: 'TESTTEMPLATE' }, (err) => {
assert.that(err).is.equalTo('Function is called without obj.lang');
done();
});
});
it('... callbacks true when template is deleted', (done) => {
ctg.deleteTemplate({ key: 'TESTTEMPLATE', lang: 'en_GB' }, (err, res) => {
if (err) {
throw err;
}
assert.that(res).is.true();
done();
});
});
});
describe('.... partial getTemplatesByKey ...', () => {
it('... is of type function', (done) => {
assert.that(ctg.getTemplatesByKey).is.ofType('function');
done();
});
it('... create a Template for the following tests', (done) => {
ctg.createTemplate({ html: '<div align="center"><div>Hello {{ name.firstname }} {{ name.lastname }}</div><br /><div><span style="color: #666666;">The weather is good in {{ address.city }}</span></div><br /><div>{{ name.firstname }} is a cool boy!</div><br>{% for item in warehouse.items %} <span>{{ item.title }}</span><span>{{ item.price }}</span>{% endfor %}</div>', key: 'TESTTEMPLATE', lang: 'en_GB', subject: 'Weatherinfo' }, (err, res) => {
if (err) {
throw err;
}
assert.that(res).is.not.undefined();
templateId = res.toString();
done();
});
});
it('... callbacks an error when key is not defined', (done) => {
ctg.getTemplatesByKey(undefined, (err) => {
assert.that(err).is.equalTo('Function is called without key');
done();
});
});
it('... callbacks a list with the templates without the html-body', (done) => {
ctg.getTemplatesByKey('TESTTEMPLATE', (err, res) => {
if (err) {
throw err;
}
assert.that(res.length).is.equalTo(1);
assert.that(res[0].html).is.undefined();
assert.that(res[0].subject).is.equalTo('Weatherinfo');
done();
});
});
});
describe('.... partial getTemplatesList ...', () => {
it('... is of type function', (done) => {
assert.that(ctg.getTemplatesList).is.ofType('function');
done();
});
it('... callbacks a list with the templates without the html-body', (done) => {
ctg.getTemplatesList((err, res) => {
if (err) {
throw err;
}
assert.that(res.length).is.equalTo(1);
assert.that(res[0].html).is.undefined();
assert.that(res[0].subject).is.equalTo('Weatherinfo');
done();
});
});
});
describe('.... partial generateHtml ...', () => {
it('... is of type function', (done) => {
assert.that(ctg.generateHtml).is.ofType('function');
done();
});
it('... callbacks an error when json is not defined', (done) => {
ctg.generateHtml(undefined, undefined, undefined, (err) => {
assert.that(err).is.equalTo('Function is called without a json object');
done();
});
});
it('... callbacks an error when key is not defined', (done) => {
ctg.generateHtml({}, undefined, undefined, (err) => {
assert.that(err).is.equalTo('Function is called without a key');
done();
});
});
it('... callbacks an error when language is not defined', (done) => {
ctg.generateHtml({}, 'TESTTEMPLATE', undefined, (err) => {
assert.that(err).is.equalTo('Function is called without a language');
done();
});
});
it('... callbacks an error when Key / Language Combination is not famous in the system', (done) => {
ctg.generateHtml({}, 'NOTTEMPALTE', 'en_GB', (err) => {
assert.that(err).is.equalTo('The named template is not famous in system');
done();
});
});
it('... gets a complete template with the words from the object', (done) => {
ctg.generateHtml(testObject, 'TESTTEMPLATE', 'en_GB', (err, res) => {
if (err) {
throw err;
}
assert.that(res.plain).is.not.undefined();
assert.that(res.html).is.equalTo('<div align="center"><div>Hello Martin Wiesmüller</div><br /><div><span style="color: #666666;">The weather is good in Holzgerlingen</span></div><br /><div>Martin is a cool boy!</div><br> <span>test</span><span>123</span> <span>Test2</span><span>1234</span></div>');
done();
});
});
});
describe('.... partial generatePdf', () => {
it('... is of type function', (done) => {
assert.that(ctg.generatePdf).is.ofType('function');
done();
});
it('... gets a pdf twith the words from the object', (done) => {
ctg.generatePdf(testObject, 'TESTTEMPLATE', 'en_GB', (err, res) => {
if (err) {
throw err;
}
assert.that(res.stream).is.not.undefined();
done();
});
});
});
});