UNPKG

content-generator

Version:

Easy template generator to manage and save templates by key and languagecode.

305 lines (252 loc) 9.72 kB
'use strict'; 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(); }); }); }); });