diff --git a/package.json b/package.json index c1989bc..de12d10 100644 --- a/package.json +++ b/package.json @@ -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", diff --git a/src/cli/index.js b/src/cli/index.js index 8365ef7..c45d3b7 100644 --- a/src/cli/index.js +++ b/src/cli/index.js @@ -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') diff --git a/src/cli/run.js b/src/cli/run.js index fd2fda2..a27fe4a 100644 --- a/src/cli/run.js +++ b/src/cli/run.js @@ -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) diff --git a/test/cli/index.js b/test/cli/index.js index c366149..4f09a0b 100644 --- a/test/cli/index.js +++ b/test/cli/index.js @@ -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') {