Skip to content

Commit f277035

Browse files
committed
Add --delay option
1 parent 73d55b1 commit f277035

File tree

4 files changed

+30
-2
lines changed

4 files changed

+30
-2
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
"dependencies": {
1111
"body-parser": "^1.8.1",
1212
"chalk": "^0.4.0",
13+
"connect-pause": "^0.1.0",
1314
"cors": "^2.3.0",
1415
"errorhandler": "^1.2.0",
1516
"express": "^4.9.5",

src/cli/index.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ module.exports = function () {
3131
id: {
3232
description: 'Set database id property (e.g. _id)',
3333
default: 'id'
34+
},
35+
delay: {
36+
alias: 'd',
37+
description: 'Add delay to responses (ms)'
3438
}
3539
})
3640
.boolean('watch')

src/cli/run.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ var chalk = require('chalk')
33
var is = require('./utils/is')
44
var load = require('./utils/load')
55
var watch = require('./watch')
6+
var pause = require('connect-pause')
67
var jsonServer = require('../server')
78

89
function prettyPrint (argv, object, rules) {
@@ -30,7 +31,7 @@ function prettyPrint (argv, object, rules) {
3031
console.log()
3132
}
3233

33-
function createServer (source, object, routes) {
34+
function createServer (source, object, routes, delay) {
3435
var server = jsonServer.create()
3536

3637
var router = jsonServer.router(
@@ -46,6 +47,10 @@ function createServer (source, object, routes) {
4647
server.use(rewriter)
4748
}
4849

50+
if (delay) {
51+
server.use(pause(delay))
52+
}
53+
4954
server.use(router)
5055

5156
return server
@@ -77,7 +82,8 @@ module.exports = function (argv) {
7782
console.log(chalk.gray(' Done'))
7883

7984
// Create server and listen
80-
server = createServer(source, data, routes).listen(argv.port, argv.host)
85+
server = createServer(source, data, routes, argv.delay)
86+
.listen(argv.port, argv.host)
8187

8288
// Display server informations
8389
prettyPrint(argv, data, routes)

test/cli/index.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,23 @@ describe('cli', function () {
9191

9292
})
9393

94+
describe('db.json -d 1000', function () {
95+
96+
beforeEach(function (done) {
97+
child = cli([dbFile, '-d', 1000])
98+
setTimeout(done, 1000)
99+
})
100+
101+
it('should delay response', function (done) {
102+
var start = new Date()
103+
request.get('/posts').expect(200, function (err) {
104+
var end = new Date()
105+
done(end - start > 1000 ? err : new Error('Request wasn\'t delayed'))
106+
})
107+
})
108+
109+
})
110+
94111
// FIXME test fails on OS X and maybe on Windows
95112
// But manually updating db.json works...
96113
if (os.platform() === 'linux') {

0 commit comments

Comments
 (0)