mirror of
https://github.com/zhigang1992/interfake.git
synced 2026-01-12 22:48:04 +08:00
Can now modify a route, but only before it is called. Should only happen once call has happened
This commit is contained in:
@@ -1,13 +1,10 @@
|
||||
var url = require('url');
|
||||
var merge = require('merge');
|
||||
|
||||
function FluentInterface(server, o) {
|
||||
o = o || { debug: false };
|
||||
var debug = require('./debug')('interfake-fluent', o.debug);
|
||||
|
||||
function forMethod(method, parent) {
|
||||
return function (originalPath) {
|
||||
var route;
|
||||
var route, merge = false;
|
||||
var routeDescriptor = {
|
||||
request: {
|
||||
url: originalPath,
|
||||
@@ -33,8 +30,13 @@ function FluentInterface(server, o) {
|
||||
return this;
|
||||
},
|
||||
body: function (body) {
|
||||
debug('Changing body of', route.simpleHash(), 'to', body);
|
||||
route.setResponseBody(body);
|
||||
if (merge) {
|
||||
debug('Merging body for', route.simpleHash(), 'with', body);
|
||||
route.mergeResponseBody(body);
|
||||
} else {
|
||||
debug('Changing body of', route.simpleHash(), 'to', body);
|
||||
route.setResponseBody(body);
|
||||
}
|
||||
return this;
|
||||
},
|
||||
delay: function(delay) {
|
||||
@@ -58,6 +60,7 @@ function FluentInterface(server, o) {
|
||||
method: 'get',
|
||||
url: path
|
||||
});
|
||||
merge = true;
|
||||
return fluentInterface;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
var util = require('core-util-is');
|
||||
var url = require('url');
|
||||
var merge = require('merge');
|
||||
var deepmerge = require('deepmerge');
|
||||
|
||||
function Route(descriptor, o) {
|
||||
o = o || { debug: false };
|
||||
@@ -61,6 +62,12 @@ Route.prototype.setResponseBody = function (body) {
|
||||
this.response.body = body;
|
||||
};
|
||||
|
||||
Route.prototype.mergeResponseBody = function (body) {
|
||||
this.debug('Merging', body, 'into', this.response.body);
|
||||
this.response.body = deepmerge(this.response.body, body);
|
||||
this.debug('Respone body is now', this.response.body);
|
||||
};
|
||||
|
||||
Route.prototype.setResponseDelay = function (delay) {
|
||||
this.debug('New delay is', delay);
|
||||
this.response.delay = delay;
|
||||
|
||||
@@ -52,7 +52,8 @@
|
||||
"merge": "^1.1.2",
|
||||
"connect-json": "0.0.0",
|
||||
"body-parser": "~1.0.2",
|
||||
"pegjs": "^0.8.0"
|
||||
"pegjs": "^0.8.0",
|
||||
"deepmerge": "^0.2.7"
|
||||
},
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
|
||||
@@ -720,19 +720,20 @@ describe('Interfake JavaScript API', function () {
|
||||
interfake.get('/fluent').body({ hello : 'there', goodbye: 'for now' }).modifies.get('/fluent').body({ what: 'ever' });
|
||||
interfake.listen(3000);
|
||||
|
||||
get('http://localhost:3000/fluent')
|
||||
get({url:'http://localhost:3000/fluent',json:true})
|
||||
.then(function (results) {
|
||||
console.log('Results are', results[1]);
|
||||
assert.equal(results[0].statusCode, 200);
|
||||
assert.equal(results[1].hello, 'there');
|
||||
assert.equal(results[1].goodbye, 'for now');
|
||||
assert.equal(results[2].what, undefined);
|
||||
assert.equal(results[1].what, undefined);
|
||||
return get('http://localhost:3000/fluent');
|
||||
})
|
||||
.then(function (results) {
|
||||
assert.equal(results[0].statusCode, 200);
|
||||
assert.equal(results[1].hello, 'there');
|
||||
assert.equal(results[1].goodbye, 'for now');
|
||||
assert.equal(results[2].what, 'ever');
|
||||
assert.equal(results[1].what, 'ever');
|
||||
done();
|
||||
})
|
||||
.done();
|
||||
|
||||
Reference in New Issue
Block a user