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