tests: add maxAge option tests for res.sendFile
[express.git] / test / app.engine.js
blobb198292fa03727650797f3d36338a14c9af3ee70
2 var express = require('../')
3   , fs = require('fs');
4 var path = require('path')
6 function render(path, options, fn) {
7   fs.readFile(path, 'utf8', function(err, str){
8     if (err) return fn(err);
9     str = str.replace('{{user.name}}', options.user.name);
10     fn(null, str);
11   });
14 describe('app', function(){
15   describe('.engine(ext, fn)', function(){
16     it('should map a template engine', function(done){
17       var app = express();
19       app.set('views', path.join(__dirname, 'fixtures'))
20       app.engine('.html', render);
21       app.locals.user = { name: 'tobi' };
23       app.render('user.html', function(err, str){
24         if (err) return done(err);
25         str.should.equal('<p>tobi</p>');
26         done();
27       })
28     })
30     it('should throw when the callback is missing', function(){
31       var app = express();
32       (function(){
33         app.engine('.html', null);
34       }).should.throw('callback function required');
35     })
37     it('should work without leading "."', function(done){
38       var app = express();
40       app.set('views', path.join(__dirname, 'fixtures'))
41       app.engine('html', render);
42       app.locals.user = { name: 'tobi' };
44       app.render('user.html', function(err, str){
45         if (err) return done(err);
46         str.should.equal('<p>tobi</p>');
47         done();
48       })
49     })
51     it('should work "view engine" setting', function(done){
52       var app = express();
54       app.set('views', path.join(__dirname, 'fixtures'))
55       app.engine('html', render);
56       app.set('view engine', 'html');
57       app.locals.user = { name: 'tobi' };
59       app.render('user', function(err, str){
60         if (err) return done(err);
61         str.should.equal('<p>tobi</p>');
62         done();
63       })
64     })
66     it('should work "view engine" with leading "."', function(done){
67       var app = express();
69       app.set('views', path.join(__dirname, 'fixtures'))
70       app.engine('.html', render);
71       app.set('view engine', '.html');
72       app.locals.user = { name: 'tobi' };
74       app.render('user', function(err, str){
75         if (err) return done(err);
76         str.should.equal('<p>tobi</p>');
77         done();
78       })
79     })
80   })