Add --delay option

This commit is contained in:
Typicode
2015-07-21 21:04:50 +02:00
parent 73d55b12aa
commit f277035c52
4 changed files with 30 additions and 2 deletions

View File

@ -10,6 +10,7 @@
"dependencies": {
"body-parser": "^1.8.1",
"chalk": "^0.4.0",
"connect-pause": "^0.1.0",
"cors": "^2.3.0",
"errorhandler": "^1.2.0",
"express": "^4.9.5",

View File

@ -31,6 +31,10 @@ module.exports = function () {
id: {
description: 'Set database id property (e.g. _id)',
default: 'id'
},
delay: {
alias: 'd',
description: 'Add delay to responses (ms)'
}
})
.boolean('watch')

View File

@ -3,6 +3,7 @@ var chalk = require('chalk')
var is = require('./utils/is')
var load = require('./utils/load')
var watch = require('./watch')
var pause = require('connect-pause')
var jsonServer = require('../server')
function prettyPrint (argv, object, rules) {
@ -30,7 +31,7 @@ function prettyPrint (argv, object, rules) {
console.log()
}
function createServer (source, object, routes) {
function createServer (source, object, routes, delay) {
var server = jsonServer.create()
var router = jsonServer.router(
@ -46,6 +47,10 @@ function createServer (source, object, routes) {
server.use(rewriter)
}
if (delay) {
server.use(pause(delay))
}
server.use(router)
return server
@ -77,7 +82,8 @@ module.exports = function (argv) {
console.log(chalk.gray(' Done'))
// Create server and listen
server = createServer(source, data, routes).listen(argv.port, argv.host)
server = createServer(source, data, routes, argv.delay)
.listen(argv.port, argv.host)
// Display server informations
prettyPrint(argv, data, routes)

View File

@ -91,6 +91,23 @@ describe('cli', function () {
})
describe('db.json -d 1000', function () {
beforeEach(function (done) {
child = cli([dbFile, '-d', 1000])
setTimeout(done, 1000)
})
it('should delay response', function (done) {
var start = new Date()
request.get('/posts').expect(200, function (err) {
var end = new Date()
done(end - start > 1000 ? err : new Error('Request wasn\'t delayed'))
})
})
})
// FIXME test fails on OS X and maybe on Windows
// But manually updating db.json works...
if (os.platform() === 'linux') {