From 27013bb761ebaa68c28e04b333cb2769a7a056c4 Mon Sep 17 00:00:00 2001 From: Bryce Gibson Date: Fri, 21 Mar 2014 08:23:29 +1100 Subject: [PATCH] Adding a delay fluent method --- lib/fluent.js | 5 +++ tests/javascript.test.js | 89 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 94 insertions(+) diff --git a/lib/fluent.js b/lib/fluent.js index b2b601d..d98a549 100644 --- a/lib/fluent.js +++ b/lib/fluent.js @@ -53,6 +53,11 @@ function FluentInterface(server, o) { put: forMethod('put', route, top || route), post: forMethod('post', route, top || route), delete: forMethod('delete', route, top || route) + }, + delay: function(delay) { + debug('Replacing delay for', url, 'with', delay); + route.response.delay = delay; + return this; } }; }; diff --git a/tests/javascript.test.js b/tests/javascript.test.js index 4ae0325..978567a 100644 --- a/tests/javascript.test.js +++ b/tests/javascript.test.js @@ -340,6 +340,50 @@ describe('Interfake JavaScript API', function () { done(); }); }); + describe('#delay', function() { + it('should create one GET endpoint with a particular body, status and delay', function (done) { + var interfake = new Interfake(); + var enoughTimeHasPassed = false; + var _this = this; + this.slow(500) + interfake.get('/fluent').body({ fluency : 'isgreat' }).status(300).delay(200); + interfake.listen(3000); + setTimeout(function() { + enoughTimeHasPassed = true; + }, 199) + + request({ url : 'http://localhost:3000/fluent', json : true }, function (error, response, body) { + assert.equal(response.statusCode, 300); + assert.equal(body.fluency, 'isgreat'); + interfake.stop(); + if(!enoughTimeHasPassed) { + throw new Error('Response wasn\'t delay for long enough'); + } + done(); + }); + }); + }); + }); + }); + describe('#delay', function() { + it('should create one GET endpoint with a particular delay', function (done) { + var interfake = new Interfake(); + var enoughTimeHasPassed = false; + var _this = this; + this.slow(500) + interfake.get('/fluent').delay(200); + interfake.listen(3000); + setTimeout(function() { + enoughTimeHasPassed = true; + }, 199) + + request({ url : 'http://localhost:3000/fluent', json : true }, function (error, response, body) { + interfake.stop(); + if(!enoughTimeHasPassed) { + throw new Error('Response wasn\'t delay for long enough'); + } + done(); + }); }); }); }); @@ -398,6 +442,51 @@ describe('Interfake JavaScript API', function () { done(); }); }); + describe('#delay', function() { + it('should create one POST endpoint with a particular body, status and delay', function (done) { + var interfake = new Interfake(); + var enoughTimeHasPassed = false; + var _this = this; + this.slow(500) + interfake.post('/fluent').body({ fluency : 'isgreat' }).status(300).delay(200); + interfake.listen(3000); + setTimeout(function() { + enoughTimeHasPassed = true; + }, 199) + + request.post({ url : 'http://localhost:3000/fluent', json : true }, function (error, response, body) { + assert.equal(response.statusCode, 300); + assert.equal(body.fluency, 'isgreat'); + interfake.stop(); + if(!enoughTimeHasPassed) { + throw new Error('Response wasn\'t delay for long enough'); + } + done(); + }); + }); + }); + }); + }); + + describe('#delay', function() { + it('should create one POST endpoint with a particular delay', function (done) { + var interfake = new Interfake(); + var enoughTimeHasPassed = false; + var _this = this; + this.slow(500) + interfake.post('/fluent').delay(200); + interfake.listen(3000); + setTimeout(function() { + enoughTimeHasPassed = true; + }, 199) + + request.post({ url : 'http://localhost:3000/fluent', json : true }, function (error, response, body) { + interfake.stop(); + if(!enoughTimeHasPassed) { + throw new Error('Response wasn\'t delay for long enough'); + } + done(); + }); }); });