144 lines
2.9 KiB
JavaScript
144 lines
2.9 KiB
JavaScript
'use strict'
|
|
|
|
var after = require('after')
|
|
var express = require('../')
|
|
, request = require('supertest');
|
|
|
|
describe('app', function(){
|
|
describe('.response', function(){
|
|
it('should extend the response prototype', function(done){
|
|
var app = express();
|
|
|
|
app.response.shout = function(str){
|
|
this.send(str.toUpperCase());
|
|
};
|
|
|
|
app.use(function(req, res){
|
|
res.shout('hey');
|
|
});
|
|
|
|
request(app)
|
|
.get('/')
|
|
.expect('HEY', done);
|
|
})
|
|
|
|
it('should only extend for the referenced app', function (done) {
|
|
var app1 = express()
|
|
var app2 = express()
|
|
var cb = after(2, done)
|
|
|
|
app1.response.shout = function (str) {
|
|
this.send(str.toUpperCase())
|
|
}
|
|
|
|
app1.get('/', function (req, res) {
|
|
res.shout('foo')
|
|
})
|
|
|
|
app2.get('/', function (req, res) {
|
|
res.shout('foo')
|
|
})
|
|
|
|
request(app1)
|
|
.get('/')
|
|
.expect(200, 'FOO', cb)
|
|
|
|
request(app2)
|
|
.get('/')
|
|
.expect(500, /(?:not a function|has no method)/, cb)
|
|
})
|
|
|
|
it('should inherit to sub apps', function (done) {
|
|
var app1 = express()
|
|
var app2 = express()
|
|
var cb = after(2, done)
|
|
|
|
app1.response.shout = function (str) {
|
|
this.send(str.toUpperCase())
|
|
}
|
|
|
|
app1.use('/sub', app2)
|
|
|
|
app1.get('/', function (req, res) {
|
|
res.shout('foo')
|
|
})
|
|
|
|
app2.get('/', function (req, res) {
|
|
res.shout('foo')
|
|
})
|
|
|
|
request(app1)
|
|
.get('/')
|
|
.expect(200, 'FOO', cb)
|
|
|
|
request(app1)
|
|
.get('/sub')
|
|
.expect(200, 'FOO', cb)
|
|
})
|
|
|
|
it('should allow sub app to override', function (done) {
|
|
var app1 = express()
|
|
var app2 = express()
|
|
var cb = after(2, done)
|
|
|
|
app1.response.shout = function (str) {
|
|
this.send(str.toUpperCase())
|
|
}
|
|
|
|
app2.response.shout = function (str) {
|
|
this.send(str + '!')
|
|
}
|
|
|
|
app1.use('/sub', app2)
|
|
|
|
app1.get('/', function (req, res) {
|
|
res.shout('foo')
|
|
})
|
|
|
|
app2.get('/', function (req, res) {
|
|
res.shout('foo')
|
|
})
|
|
|
|
request(app1)
|
|
.get('/')
|
|
.expect(200, 'FOO', cb)
|
|
|
|
request(app1)
|
|
.get('/sub')
|
|
.expect(200, 'foo!', cb)
|
|
})
|
|
|
|
it('should not pollute parent app', function (done) {
|
|
var app1 = express()
|
|
var app2 = express()
|
|
var cb = after(2, done)
|
|
|
|
app1.response.shout = function (str) {
|
|
this.send(str.toUpperCase())
|
|
}
|
|
|
|
app2.response.shout = function (str) {
|
|
this.send(str + '!')
|
|
}
|
|
|
|
app1.use('/sub', app2)
|
|
|
|
app1.get('/sub/foo', function (req, res) {
|
|
res.shout('foo')
|
|
})
|
|
|
|
app2.get('/', function (req, res) {
|
|
res.shout('foo')
|
|
})
|
|
|
|
request(app1)
|
|
.get('/sub')
|
|
.expect(200, 'foo!', cb)
|
|
|
|
request(app1)
|
|
.get('/sub/foo')
|
|
.expect(200, 'FOO', cb)
|
|
})
|
|
})
|
|
})
|