121 lines
2.7 KiB
JavaScript
121 lines
2.7 KiB
JavaScript
'use strict'
|
|
|
|
var assert = require('node:assert')
|
|
var express = require('..')
|
|
var request = require('supertest')
|
|
|
|
describe('app', function(){
|
|
it('should inherit from event emitter', function(done){
|
|
var app = express();
|
|
app.on('foo', done);
|
|
app.emit('foo');
|
|
})
|
|
|
|
it('should be callable', function(){
|
|
var app = express();
|
|
assert.equal(typeof app, 'function');
|
|
})
|
|
|
|
it('should 404 without routes', function(done){
|
|
request(express())
|
|
.get('/')
|
|
.expect(404, done);
|
|
})
|
|
})
|
|
|
|
describe('app.parent', function(){
|
|
it('should return the parent when mounted', function(){
|
|
var app = express()
|
|
, blog = express()
|
|
, blogAdmin = express();
|
|
|
|
app.use('/blog', blog);
|
|
blog.use('/admin', blogAdmin);
|
|
|
|
assert(!app.parent, 'app.parent');
|
|
assert.strictEqual(blog.parent, app)
|
|
assert.strictEqual(blogAdmin.parent, blog)
|
|
})
|
|
})
|
|
|
|
describe('app.mountpath', function(){
|
|
it('should return the mounted path', function(){
|
|
var admin = express();
|
|
var app = express();
|
|
var blog = express();
|
|
var fallback = express();
|
|
|
|
app.use('/blog', blog);
|
|
app.use(fallback);
|
|
blog.use('/admin', admin);
|
|
|
|
assert.strictEqual(admin.mountpath, '/admin')
|
|
assert.strictEqual(app.mountpath, '/')
|
|
assert.strictEqual(blog.mountpath, '/blog')
|
|
assert.strictEqual(fallback.mountpath, '/')
|
|
})
|
|
})
|
|
|
|
describe('app.path()', function(){
|
|
it('should return the canonical', function(){
|
|
var app = express()
|
|
, blog = express()
|
|
, blogAdmin = express();
|
|
|
|
app.use('/blog', blog);
|
|
blog.use('/admin', blogAdmin);
|
|
|
|
assert.strictEqual(app.path(), '')
|
|
assert.strictEqual(blog.path(), '/blog')
|
|
assert.strictEqual(blogAdmin.path(), '/blog/admin')
|
|
})
|
|
})
|
|
|
|
describe('in development', function(){
|
|
before(function () {
|
|
this.env = process.env.NODE_ENV
|
|
process.env.NODE_ENV = 'development'
|
|
})
|
|
|
|
after(function () {
|
|
process.env.NODE_ENV = this.env
|
|
})
|
|
|
|
it('should disable "view cache"', function(){
|
|
var app = express();
|
|
assert.ok(!app.enabled('view cache'))
|
|
})
|
|
})
|
|
|
|
describe('in production', function(){
|
|
before(function () {
|
|
this.env = process.env.NODE_ENV
|
|
process.env.NODE_ENV = 'production'
|
|
})
|
|
|
|
after(function () {
|
|
process.env.NODE_ENV = this.env
|
|
})
|
|
|
|
it('should enable "view cache"', function(){
|
|
var app = express();
|
|
assert.ok(app.enabled('view cache'))
|
|
})
|
|
})
|
|
|
|
describe('without NODE_ENV', function(){
|
|
before(function () {
|
|
this.env = process.env.NODE_ENV
|
|
process.env.NODE_ENV = ''
|
|
})
|
|
|
|
after(function () {
|
|
process.env.NODE_ENV = this.env
|
|
})
|
|
|
|
it('should default to development', function(){
|
|
var app = express();
|
|
assert.strictEqual(app.get('env'), 'development')
|
|
})
|
|
})
|