middy
Advanced tools
Comparing version 0.28.5 to 0.29.0
{ | ||
"name": "middy", | ||
"version": "0.28.5", | ||
"version": "0.29.0", | ||
"description": "🛵 The stylish Node.js middleware engine for AWS Lambda", | ||
@@ -60,5 +60,5 @@ "main": "./index.js", | ||
"jest": "^24.8.0", | ||
"jsdoc": "^3.6.2", | ||
"jsdoc": "^3.6.3", | ||
"jsdoc-to-markdown": "^5.0.0", | ||
"marked": "^0.6.2", | ||
"marked": "^0.7.0", | ||
"regenerator-runtime": "^0.13.1", | ||
@@ -65,0 +65,0 @@ "typescript": "^3.3.3", |
@@ -41,17 +41,27 @@ <div align="center"> | ||
- [A little appetizer](#a-little-appetizer) | ||
- [Install](#install) | ||
- [Requirements](#requirements) | ||
- [Why?](#why) | ||
- [Usage](#usage) | ||
- [How it works](#how-it-works) | ||
- [Promises and error handling](#promises-and-error-handling) | ||
- [Writing a middleware](#writing-a-middleware) | ||
- [Available middlewares](#available-middlewares) | ||
- [API](#api) | ||
- [Typescript](#typescript) | ||
- [FAQ](#faq) | ||
- [3rd party middlewares](#3rd-party-middlewares) | ||
- [Contributing](#contributing) | ||
- [License](#license) | ||
- [TOC](#toc) | ||
- [A little appetizer](#a-little-appetizer) | ||
- [Install](#install) | ||
- [Requirements](#requirements) | ||
- [Why?](#why-) | ||
- [Usage](#usage) | ||
- [How it works](#how-it-works) | ||
* [Execution order](#execution-order) | ||
* [Interrupt middleware execution early](#interrupt-middleware-execution-early) | ||
* [Handling errors](#handling-errors) | ||
* [Promise support](#promise-support) | ||
* [Promises and error handling](#promises-and-error-handling) | ||
* [Using async/await](#using-async-await) | ||
- [Writing a middleware](#writing-a-middleware) | ||
* [Configurable middlewares](#configurable-middlewares) | ||
* [Inline middlewares](#inline-middlewares) | ||
* [More details on creating middlewares](#more-details-on-creating-middlewares) | ||
- [Available middlewares](#available-middlewares) | ||
- [Api](#api) | ||
- [Typescript](#typescript) | ||
- [FAQ](#faq) | ||
* [Q: Lambda timing out](#q--lambda-timing-out) | ||
- [3rd party middlewares](#3rd-party-middlewares) | ||
- [Contributing](#contributing) | ||
- [License](#license) | ||
@@ -58,0 +68,0 @@ |
@@ -58,2 +58,71 @@ const middy = require('../../middy') | ||
}) | ||
test('It should cache things using custom cache settings and discard result of a resolve promised with setValue', (endTest) => { | ||
const calculateCacheId = (event) => Promise.resolve(event.id) | ||
const myStorage = {} | ||
const getValue = (key) => new Promise((resolve, reject) => { | ||
setTimeout(() => resolve(myStorage[key]), 50) | ||
}) | ||
const setValue = (key, value) => new Promise((resolve, reject) => { | ||
setTimeout(() => { | ||
myStorage[key] = value | ||
return resolve('Value to discard') | ||
}, 50) | ||
}) | ||
const originalHandler = jest.fn((event, context, cb) => { | ||
cb(null, event.a + event.b) | ||
}) | ||
const handler = middy(originalHandler) | ||
.use(cache({ | ||
calculateCacheId, | ||
getValue, | ||
setValue | ||
})) | ||
const event = { id: 'some_unique_id', a: 2, b: 3 } | ||
const context = {} | ||
handler(event, context, (_, response) => { | ||
handler(event, context, (_, response2) => { | ||
expect(response).toEqual(response2) | ||
expect(originalHandler.mock.calls.length).toBe(1) | ||
endTest() | ||
}) | ||
}) | ||
}) | ||
test('It should throw en error if setValue return a rejected promise', (endTest) => { | ||
const errMessage = 'Something bad happened' | ||
const calculateCacheId = (event) => Promise.resolve(event.id) | ||
const myStorage = {} | ||
const getValue = (key) => new Promise((resolve, reject) => { | ||
setTimeout(() => resolve(myStorage[key]), 50) | ||
}) | ||
const setValue = (key, value) => new Promise((resolve, reject) => { | ||
setTimeout(() => { | ||
myStorage[key] = value | ||
return reject(new Error(errMessage)) | ||
}, 50) | ||
}) | ||
const originalHandler = jest.fn((event, context, cb) => { | ||
cb(null, event.a + event.b) | ||
}) | ||
const handler = middy(originalHandler) | ||
.use(cache({ | ||
calculateCacheId, | ||
getValue, | ||
setValue | ||
})) | ||
const event = { id: 'some_unique_id', a: 2, b: 3 } | ||
const context = {} | ||
handler(event, context, (err, _) => { | ||
expect(err.message).toEqual(errMessage) | ||
expect(originalHandler.mock.calls.length).toBe(1) | ||
endTest() | ||
}) | ||
}) | ||
}) |
@@ -35,5 +35,6 @@ const { createHash } = require('crypto') | ||
options.setValue(currentCacheKey, handler.response) | ||
.then(next) | ||
.then(() => next()) | ||
.catch(err => next(err)) | ||
} | ||
}) | ||
} |
189767
4718
771