mappersmith
Advanced tools
Comparing version 2.23.0 to 2.24.0
@@ -18,3 +18,3 @@ 'use strict'; | ||
/* global VERSION */ | ||
var version = exports.version = '2.23.0'; | ||
var version = exports.version = '2.24.0'; | ||
@@ -21,0 +21,0 @@ var configs = exports.configs = { |
@@ -11,2 +11,6 @@ 'use strict'; | ||
var _mockAssert = require('./mock-assert'); | ||
var _mockAssert2 = _interopRequireDefault(_mockAssert); | ||
var _request = require('../request'); | ||
@@ -35,4 +39,6 @@ | ||
this.responseData = null; | ||
this.responseHandler = null; | ||
this.responseHeaders = {}; | ||
this.responseStatus = 200; | ||
this.responseStatusHandler = null; | ||
this.mockRequest = null; | ||
@@ -81,4 +87,8 @@ } | ||
*/ | ||
status: function status(responseStatus) { | ||
this.responseStatus = responseStatus; | ||
status: function status(responder) { | ||
if (typeof responder === 'function') { | ||
this.responseStatusHandler = responder; | ||
} else { | ||
this.responseStatus = responder; | ||
} | ||
return this; | ||
@@ -91,4 +101,8 @@ }, | ||
*/ | ||
response: function response(responseData) { | ||
this.responseData = responseData; | ||
response: function response(responder) { | ||
if (typeof responder === 'function') { | ||
this.responseHandler = responder; | ||
} else { | ||
this.responseData = responder; | ||
} | ||
return this; | ||
@@ -112,14 +126,10 @@ }, | ||
var finalRequest = this.createRequest(); | ||
var assertObject = this.mockRequest ? this.mockRequest.assertObject() : new _mockAssert2.default([]); | ||
var responseStatus = this.responseStatusHandler ? this.responseStatusHandler(finalRequest, assertObject) : this.responseStatus; | ||
var responseData = this.responseHandler ? this.responseHandler(finalRequest, assertObject) : this.responseData; | ||
if (!this.mockRequest) { | ||
var methodDescriptor = this.manifest.createMethodDescriptor(this.resourceName, this.methodName); | ||
var initialRequest = new _request2.default(methodDescriptor, this.requestParams); | ||
var middleware = this.manifest.createMiddleware({ | ||
resourceName: this.resourceName, | ||
resourceMethod: this.methodName, | ||
mockRequest: true | ||
}); | ||
var finalRequest = middleware.reduce(function (request, middleware) { | ||
return middleware.request(request); | ||
}, initialRequest); | ||
var params = finalRequest.params(); | ||
@@ -142,5 +152,5 @@ var hasParamMatchers = Object.keys(params).find(function (key) { | ||
response: { | ||
status: this.responseStatus, | ||
status: responseStatus, | ||
headers: this.responseHeaders, | ||
body: this.responseData | ||
body: responseData | ||
} | ||
@@ -150,2 +160,5 @@ }); | ||
this.mockRequest.responseStatus = responseStatus; | ||
this.mockRequest.responseData = responseData; | ||
return this.mockRequest; | ||
@@ -168,2 +181,19 @@ }, | ||
}, {}); | ||
}, | ||
/** | ||
* @private | ||
*/ | ||
createRequest: function createRequest() { | ||
var methodDescriptor = this.manifest.createMethodDescriptor(this.resourceName, this.methodName); | ||
var initialRequest = new _request2.default(methodDescriptor, this.requestParams); | ||
var middleware = this.manifest.createMiddleware({ | ||
resourceName: this.resourceName, | ||
resourceMethod: this.methodName, | ||
mockRequest: true | ||
}); | ||
return middleware.reduce(function (request, middleware) { | ||
return middleware.request(request); | ||
}, initialRequest); | ||
} | ||
@@ -170,0 +200,0 @@ }; |
{ | ||
"name": "mappersmith", | ||
"version": "2.23.0", | ||
"version": "2.24.0", | ||
"description": "It is a lightweight rest client for node.js and the browser", | ||
@@ -5,0 +5,0 @@ "author": "Tulio Ornelas <ornelas.tulio@gmail.com>", |
@@ -774,4 +774,4 @@ [![npm version](https://badge.fury.io/js/mappersmith.svg)](http://badge.fury.io/js/mappersmith) | ||
* `with(resourceMethodArguments)`, ex: `with({ id: 1 })` | ||
* `status(statusNumber)`, ex: `status(204)` | ||
* `response(responseData)`, ex: `response({ user: { id: 1 } })` | ||
* `status(statusNumber | statusHandler)`, ex: `status(204)` or `status((request, mock) => 200)` | ||
* `response(responseData | responseHandler)`, ex: `response({ user: { id: 1 } })` or `response((request, mock) => ({ user: { id: request.body().id } }))` | ||
* `assertObject()` | ||
@@ -861,2 +861,17 @@ | ||
`response` and `status` can accept functions to generate response body or status. This can be useful when you want to return different responses for the same request being made several times. | ||
```javascript | ||
const generateResponse = () => { | ||
return (request, mock) => mock.callsCount() === 0 | ||
? {} | ||
: { user: { id: 1 } } | ||
} | ||
const mock = mockClient(client) | ||
.resource('User') | ||
.method('create') | ||
.response(generateResponse()) | ||
``` | ||
#### mockRequest | ||
@@ -863,0 +878,0 @@ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
113220
2175
1105