diff --git a/package.json b/package.json index 2166a89..46f76ad 100644 --- a/package.json +++ b/package.json @@ -10,9 +10,13 @@ "url": "https://github.com/CupCakeArmy/cometa", "type": "github" }, + "scripts": { + "test": "mocha" + }, "author": "Niccolo Borgioli", "license": "MIT", "devDependencies": { - "@types/node": "^9.4.1" + "@types/node": "^9.4.6", + "mocha": "^5.0.1" } } diff --git a/test/test.js b/test/test.js new file mode 100644 index 0000000..d084b35 --- /dev/null +++ b/test/test.js @@ -0,0 +1,130 @@ +const assert = require('assert') +const Cometa = require('../dist/cometa') + +describe('Array', function () { + + let engine + let str + + function render(template, data) { + return new Promise(resolve => { + engine.render(template, data, (err, render) => { + resolve(render) + }) + }) + } + + function compare(a, b, msg) { + assert.equal(a.replace(/\s/g, ''), b.replace(/\s/g, ''), msg) + } + + before(() => { + engine = new Cometa() + }) + + describe('Variables', () => { + + it('Simple', async () => { + const str = 'myString' + compare(await render('var_1', { + myVar: str + }), str) + }) + + it('Nested', async () => { + const str = 'myString' + compare(await render('var_2', { + obj: [{ + title: str + }] + }), str) + }) + }) + + describe('Comment', () => { + + it('Simple', async () => { + compare(await render('comment_1', {}), '
') + }) + + it('Multiline', async () => { + compare(await render('comment_2', {}), '
') + }) + }) + + describe('If', () => { + + it('Simple True', async () => { + for (const testCase of ['mystring', 0, true]) + compare(await render('if_1', { + myVar: testCase + }), `Result: ${testCase}`) + }) + + it('Simple False', async () => { + for (const testCase of [false, '', null, undefined]) + compare(await render('if_1', { + myVar: testCase + }), ``) + }) + + }) + + describe('Loop', () => { + + it('Simple', async () => { + compare( + await render('loop_1', { + "links": [{ + "id": 0, + "name": "One" + }, + { + "id": 1, + "name": "Two" + } + ] + }), ` + `) + }) + }) + + describe('', () => { + + it('', async () => { + compare( + await render('mixed_1', { + title: 'Cometa!', + arr: [{ + show: true, + msg: 'a', + }, { + show: false, + msg: 'b', + }, { + show: true, + msg: 'c', + comments: [ + 'd', + 'e' + ] + }], + }), + ` +

Cometa!

+ `) + }) + }) + +}) \ No newline at end of file