diff --git a/package.json b/package.json index cd9d7a6..f1270f7 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,9 @@ "node": ">= 0.6.0" }, "main": "lib/main.js", + "scripts": { + "test": "./node_modules/.bin/mocha --reporter spec --ui bdd" + }, "dependencies": { "ejs": "0.8.3", "juice": "~0.3.2", @@ -58,6 +61,10 @@ }, "devDependencies": { "nodemailer": "0.3.27", - "postmark": "0.1.6" + "postmark": "0.1.6", + "mocha": "~1.17.1", + "chai": "^1.9.0", + "mkdirp": "^0.3.5", + "rimraf": "^2.2.6" } } diff --git a/test/testTemplateManager.js b/test/testTemplateManager.js new file mode 100644 index 0000000..6464189 --- /dev/null +++ b/test/testTemplateManager.js @@ -0,0 +1,135 @@ +var tm = require('../lib/templateManager') + , expect = require('chai').expect; + +describe('Template manager', function() { + + it('should render ejs', function(done) { + var opts = { + locals: {item: 'test'}, + filename: 'test.ejs', + source: '

<%= item%> <%= engine%>

' + } + + tm.render(opts, function(err, res) { + expect(err).to.be.null; + expect(res).to.equal('

test .ejs

'); + + done() + }) + }) + + it('should render jade', function(done) { + var opts = { + locals: {item: 'test'}, + filename: 'test.jade', + source: 'h1= item\nh1= engine' + } + + tm.render(opts, function(err, res) { + expect(err).to.be.null; + expect(res).to.equal('

test

.jade

'); + + done() + }) + }) + + it('should render swig', function(done) { + var opts = { + locals: {item: 'test'}, + filename: 'test.swig', + source: '

{{ item }} {{ engine }}

' + } + + tm.render(opts, function(err, res) { + expect(err).to.be.null; + expect(res).to.equal('

test .swig

'); + + done() + }) + }) + + it('should render handlebars', function(done) { + var opts = { + locals: {item: 'test'}, + filename: 'test.handlebars', + source: '

{{ item }} {{ engine }}

' + } + + tm.render(opts, function(err, res) { + expect(err).to.be.null; + expect(res).to.equal('

test .handlebars

'); + + done() + }) + }) + + it('should render less', function(done) { + var opts = { + locals : {}, + filename : 'test.less', + source : '.class{ width: (1 + 1) }' + } + + tm.render(opts, function(err, res) { + expect(err).to.be.null; + expect(res).to.equal('.class {\n width: 2;\n}\n'); + + done() + }) + }) + + it('should render stylus', function(done) { + var opts = {locals: {}}; + opts.filename = 'test.stylus'; + opts.source = 'body\n width: 2px\n'; + tm.render(opts, function(err, res) { + expect(err).to.be.null; + expect(res).to.equal('body {\n width: 2px;\n}\n'); + done(); + }) + }) + + it('should render styl', function(done) { + var opts = { + locals : {whitespace: true}, + filename : 'test.styl', + source : 'body\n color: blue' + } + + tm.render(opts, function(err, res) { + expect(err).to.be.null; + expect(res).to.equal('body {\n color: blue;\n}') + done() + }) + }) + + it('should render sass', function(done) { + var opts = { + locals : {}, + filename : 'test.sass', + source : '$gray: #ccc;body {color: $gray}' + } + + tm.render(opts, function(err, res) { + expect(err).to.be.null; + expect(res).to.equal('body {\n color: #ccc; }\n'); + + done() + }) + }) + + it('should render css', function(done) { + var opts = { + locals : {}, + filename : 'test.css', + source : 'body { color: #ccc; }' + } + + tm.render(opts, function(err, res) { + expect(err).to.be.null; + expect(res).to.equal('body { color: #ccc; }'); + + done() + }) + }) +}) \ No newline at end of file