lambda-tester
Advanced tools
Comparing version
# Change Log | ||
## 2.8.0 (2017-03-07) | ||
New | ||
* Added check for node version. Thanks @toaster | ||
Updated: | ||
* Automatically detects `done.fail()` to support Jasmine users. Thanks @toaster | ||
* Updated documentation | ||
Internal: | ||
* Code clean-up and refactor | ||
## 2.7.0 (2017-01-31) | ||
@@ -4,0 +19,0 @@ |
153
lib/index.js
@@ -9,5 +9,10 @@ 'use strict'; | ||
const TARGET_NODE_VERSION = '4.3.2'; | ||
var checkForHandleLeak = false; | ||
var checkVersion = true; | ||
function noop_func() {} | ||
function createContext( tester ) { | ||
@@ -177,2 +182,4 @@ | ||
verifier = verifier || noop_func; | ||
resolve( verifier( result, { execTime } ) ); | ||
@@ -188,6 +195,11 @@ } | ||
return new Promise( function( resolve, reject ) { | ||
return new Promise( ( resolve, reject ) => { | ||
try { | ||
if( checkVersion && (process.versions.node !== TARGET_NODE_VERSION) ) { | ||
throw new Error( 'Please test with node.js ' + TARGET_NODE_VERSION ); | ||
} | ||
if( tester._loadHandler ) { | ||
@@ -212,16 +224,8 @@ | ||
function addLegecyVerify( promise ) { | ||
function addVerify( promise ) { | ||
promise.verify = function( done ) { | ||
promise.verify = ( done ) => { | ||
return promise.then( | ||
function() { | ||
done(); | ||
}, | ||
function( err ) { | ||
done( err ); | ||
} | ||
); | ||
// done.fail for jasmine users | ||
return promise.then( done, done.fail || done ); | ||
} | ||
@@ -232,12 +236,7 @@ } | ||
let afterFunc = tester._afterFunc; | ||
let afterFunc = tester._afterFunc || noop_func; | ||
if( !afterFunc ) { | ||
afterFunc = function() {}; | ||
} | ||
promise.then( | ||
function( result ) { | ||
( result ) => { | ||
@@ -248,7 +247,8 @@ afterFunc( result, true ); | ||
}, | ||
function( err ) { | ||
( err ) => { | ||
afterFunc( err, false ); | ||
return Promise.reject( err ); | ||
// rethrow | ||
throw err; | ||
} | ||
@@ -262,7 +262,4 @@ ); | ||
if( handler ) { | ||
this._handler = handler; | ||
this._handler = handler; | ||
} | ||
this._context = {}; | ||
@@ -344,13 +341,6 @@ | ||
if( !resultVerifier ) { | ||
resultVerifier = function() {}; | ||
} | ||
let context = createContext( this ); | ||
let self = this; | ||
let promise = resolveHandler( this ) | ||
.then( function() { | ||
.then( () => { | ||
@@ -361,13 +351,12 @@ let savedHandleState = lambdaLeak.capture(); | ||
// promise and .then() | ||
return new Promise( function( resolve, reject ) { | ||
return new Promise( ( resolve, reject ) => { | ||
context.succeed = function( result ) { | ||
context.succeed = ( result ) => { | ||
// FUTURE: if memory is beyond, throw exception | ||
verifyResult( self, result, resultVerifier, resolve, reject, savedHandleState ); | ||
verifyResult( this, result, resultVerifier, resolve, reject, savedHandleState ); | ||
}; | ||
context.fail = function( err ) { | ||
context.fail = ( err ) =>{ | ||
@@ -382,12 +371,11 @@ err = convertError( err ); | ||
context.getRemainingTimeInMillis = createGetRemainingTimeInMillis( self ); | ||
context.getRemainingTimeInMillis = createGetRemainingTimeInMillis( this ); | ||
let callback = createFailCallback( reject ); | ||
runHandler( self, context, callback, reject ); | ||
runHandler( this, context, callback, reject ); | ||
}); | ||
}); | ||
// support for v1 users | ||
addLegecyVerify( promise ); | ||
addVerify( promise ); | ||
@@ -401,13 +389,6 @@ addCleanup( promise, this ); | ||
if( !resultVerifier ) { | ||
resultVerifier = function() {}; | ||
} | ||
let context = createContext( this ); | ||
let self = this; | ||
let promise = resolveHandler( this ) | ||
.then( function() { | ||
.then( () => { | ||
@@ -418,12 +399,10 @@ let savedHandleState = lambdaLeak.capture(); | ||
// promise and .then() | ||
return new Promise( function( resolve, reject ) { | ||
return new Promise( ( resolve, reject ) => { | ||
context.fail = function( errResult ) { | ||
context.fail = ( errResult ) => { | ||
errResult = convertError( errResult ); | ||
verifyResult( self, errResult, resultVerifier, resolve, reject, savedHandleState ); | ||
verifyResult( this, convertError( errResult ), resultVerifier, resolve, reject, savedHandleState ); | ||
}; | ||
context.succeed = function( result ) { | ||
context.succeed = ( result ) => { | ||
@@ -436,12 +415,11 @@ var failError = new Error( 'encountered successful operation but expected failure - result: ' + result ); | ||
context.getRemainingTimeInMillis = createGetRemainingTimeInMillis( self ); | ||
context.getRemainingTimeInMillis = createGetRemainingTimeInMillis( this ); | ||
let callback = createFailCallback( reject ); | ||
runHandler( self, context, callback, reject ); | ||
runHandler( this, context, callback, reject ); | ||
}); | ||
}); | ||
// support for v1 users | ||
addLegecyVerify( promise ); | ||
addVerify( promise ); | ||
@@ -455,11 +433,4 @@ addCleanup( promise, this ); | ||
if( !resultVerifier ) { | ||
resultVerifier = function() {}; | ||
} | ||
let self = this; | ||
let promise = resolveHandler( this ) | ||
.then( function() { | ||
.then( () => { | ||
@@ -470,15 +441,13 @@ // need to do a nested promise because mocha injects a timer between the start of the | ||
return new Promise( function( resolve, reject ) { | ||
return new Promise( ( resolve, reject ) => { | ||
let context = createCallbackContext( self, reject ); | ||
let context = createCallbackContext( this, reject ); | ||
context.getRemainingTimeInMillis = createGetRemainingTimeInMillis( self ); | ||
context.getRemainingTimeInMillis = createGetRemainingTimeInMillis( this ); | ||
var callback = function( err, result ) { | ||
var callback = ( err, result ) => { | ||
if( err ) { | ||
err = convertError( err ); | ||
return verifyResult( self, err, resultVerifier, resolve, reject, savedHandleState ); | ||
return verifyResult( this, convertError( err ), resultVerifier, resolve, reject, savedHandleState ); | ||
} | ||
@@ -492,6 +461,8 @@ | ||
runHandler( self, context, callback, reject ); | ||
runHandler( this, context, callback, reject ); | ||
}); | ||
}); | ||
addVerify( promise ); | ||
addCleanup( promise, this ); | ||
@@ -504,11 +475,4 @@ | ||
if( !resultVerifier ) { | ||
resultVerifier = function() {}; | ||
} | ||
let self = this; | ||
let promise = resolveHandler( this ) | ||
.then( function() { | ||
.then( () => { | ||
@@ -519,9 +483,9 @@ // need to do a nested promise because mocha injects a timer between the start of the | ||
return new Promise( function( resolve, reject ) { | ||
return new Promise( ( resolve, reject ) => { | ||
let context = createCallbackContext( self, reject ); | ||
let context = createCallbackContext( this, reject ); | ||
context.getRemainingTimeInMillis = createGetRemainingTimeInMillis( self ); | ||
context.getRemainingTimeInMillis = createGetRemainingTimeInMillis( this ); | ||
let callback = function( err, result ) { | ||
let callback = ( err, result ) => { | ||
@@ -538,9 +502,11 @@ if( err ) { | ||
verifyResult( self, result, resultVerifier, resolve, reject, savedHandleState ); | ||
verifyResult( this, result, resultVerifier, resolve, reject, savedHandleState ); | ||
} | ||
runHandler( self, context, callback, reject ); | ||
runHandler( this, context, callback, reject ); | ||
}); | ||
}); | ||
addVerify( promise ); | ||
addCleanup( promise, this ); | ||
@@ -562,2 +528,7 @@ | ||
LambdaTesterModule.noVersionCheck = function() { | ||
checkVersion = false; | ||
} | ||
// Set the task root to the app's root if not already set | ||
@@ -564,0 +535,0 @@ process.env.LAMBDA_TASK_ROOT = require( 'app-root-path' ); |
{ | ||
"name": "lambda-tester", | ||
"version": "2.7.0", | ||
"version": "2.8.0", | ||
"description": "Unit/Integration tests for AWS Lambda handlers", | ||
@@ -5,0 +5,0 @@ "main": "lib/index.js", |
@@ -13,3 +13,3 @@ [](https://travis-ci.org/vandium-io/lambda-tester) | ||
* Supports Promises | ||
* Easily integrates with test frameworks | ||
* Easily integrates with test frameworks (Mocha and Jasmine) | ||
* Handlers can be loaded and removed after execution | ||
@@ -19,3 +19,3 @@ * Lightweight and won't impact performance | ||
* Automatically loads .env files | ||
* Works with Node 4.3.2+ | ||
* Works with Node 4.3.2 | ||
@@ -82,3 +82,3 @@ ## Installation | ||
Complete documentation can be found in our [documentation](docs/main.md) page. | ||
Complete documentation can be found in our [documentation](docs) page. | ||
@@ -85,0 +85,0 @@ ## Projects Using `lambda-tester` |
36741
17.38%18
125%353
-4.85%