in apps/mountebank-mock/mountebank-source/src/models/inMemoryImpostersRepository.js [37:93]
function wrap (stub = {}) {
const cloned = helpers.clone(stub),
statefulResponses = repeatTransform(cloned.responses || []);
/**
* Adds a new response to the stub (e.g. during proxying)
* @memberOf module:models/inMemoryImpostersRepository#
* @param {Object} response - the response to add
* @returns {Object} - the promise
*/
cloned.addResponse = async response => {
cloned.responses = cloned.responses || [];
cloned.responses.push(response);
statefulResponses.push(response);
return response;
};
/**
* Selects the next response from the stub, including repeat behavior and circling back to the beginning
* @memberOf module:models/inMemoryImpostersRepository#
* @returns {Object} - the response
* @returns {Object} - the promise
*/
cloned.nextResponse = async () => {
const responseConfig = statefulResponses.shift();
if (responseConfig) {
statefulResponses.push(responseConfig);
return createResponse(responseConfig, cloned.stubIndex);
}
else {
return createResponse();
}
};
/**
* Records a match for debugging purposes
* @memberOf module:models/inMemoryImpostersRepository#
* @param {Object} request - the request
* @param {Object} response - the response
* @param {Object} responseConfig - the config that generated the response
* @param {Number} processingTime - the time to match the predicate and generate the full response
* @returns {Object} - the promise
*/
cloned.recordMatch = async (request, response, responseConfig, processingTime) => {
cloned.matches = cloned.matches || [];
cloned.matches.push({
timestamp: new Date().toJSON(),
request,
response,
responseConfig,
processingTime
});
};
return cloned;
}