From 84f01d1e30d8193025c954b0310c44bf87bb7a30 Mon Sep 17 00:00:00 2001 From: Tj Holowaychuk Date: Wed, 9 Nov 2011 15:00:40 -0800 Subject: [PATCH] Added res.render() tests --- test/res.render.js | 144 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 test/res.render.js diff --git a/test/res.render.js b/test/res.render.js new file mode 100644 index 00000000..ae2a53d3 --- /dev/null +++ b/test/res.render.js @@ -0,0 +1,144 @@ + +var express = require('../') + , request = require('./support/http'); + +describe('res', function(){ + describe('.render(name)', function(){ + it('should expose app.locals', function(done){ + var app = express(); + + app.set('views', __dirname + '/fixtures'); + app.locals.user = { name: 'tobi' }; + + app.use(function(req, res){ + res.render('user.jade'); + }); + + request(app) + .get('/') + .end(function(res){ + res.body.should.equal('

tobi

'); + done(); + }); + }) + + it('should support index.', function(done){ + var app = express(); + + app.set('views', __dirname + '/fixtures'); + app.set('view engine', 'jade'); + + app.use(function(req, res){ + res.render('blog/post'); + }); + + request(app) + .get('/') + .end(function(res){ + res.body.should.equal('

blog post

'); + done(); + }); + }) + + describe('when an error occurs', function(){ + it('should next(err)', function(done){ + var app = express(); + + app.set('views', __dirname + '/fixtures'); + + app.use(function(req, res){ + res.render('user.jade'); + }); + + app.use(function(err, req, res, next){ + res.end(err.message); + }); + + request(app) + .get('/') + .end(function(res){ + res.body.should.match(/user is not defined/); + done(); + }); + }) + }) + + describe('when "view engine" is given', function(){ + it('should render the template', function(done){ + var app = express(); + + app.set('view engine', 'jade'); + app.set('views', __dirname + '/fixtures'); + + app.use(function(req, res){ + res.render('email'); + }); + + request(app) + .get('/') + .end(function(res){ + res.body.should.equal('

This is an email

'); + done(); + }); + }) + }) + }) + + describe('.render(name, option)', function(){ + it('should render the template', function(done){ + var app = express(); + + app.set('views', __dirname + '/fixtures'); + + var user = { name: 'tobi' }; + + app.use(function(req, res){ + res.render('user.jade', { user: user }); + }); + + request(app) + .get('/') + .end(function(res){ + res.body.should.equal('

tobi

'); + done(); + }); + }) + + it('should expose app.locals', function(done){ + var app = express(); + + app.set('views', __dirname + '/fixtures'); + app.locals.user = { name: 'tobi' }; + + app.use(function(req, res){ + res.render('user.jade', {}); + }); + + request(app) + .get('/') + .end(function(res){ + res.body.should.equal('

tobi

'); + done(); + }); + }) + + it('should give precedence to res.render() locals', function(done){ + var app = express(); + + app.set('views', __dirname + '/fixtures'); + app.locals.user = { name: 'tobi' }; + var jane = { name: 'jane' }; + + app.use(function(req, res){ + res.render('user.jade', { user: jane }); + }); + + request(app) + .get('/') + .end(function(res){ + res.body.should.equal('

jane

'); + done(); + }); + }) + }) +})