From 63c029b38d14f2d8d74d65083a4cdd76c6fb5e3a Mon Sep 17 00:00:00 2001 From: Manuel Vilche Date: Thu, 18 Jun 2020 15:15:57 -0300 Subject: [PATCH] finish sns tests --- lib/sns/serverless/dispatcher.js | 36 +++++++------------------- tests/sns/serverless/handler.js | 43 ++++++++++++++++---------------- 2 files changed, 30 insertions(+), 49 deletions(-) diff --git a/lib/sns/serverless/dispatcher.js b/lib/sns/serverless/dispatcher.js index c47d0ab..e62b5a6 100644 --- a/lib/sns/serverless/dispatcher.js +++ b/lib/sns/serverless/dispatcher.js @@ -23,10 +23,16 @@ class SNSServerlessDispatcher { const listener = new Listener(this._event); - await this.process(listener); + if(typeof listener.process !== 'function') + throw new SNSServerlessHandlerError('Process method is required and must be a function', SNSServerlessHandlerError.codes.PROCESS_NOT_FOUND); - if(this.error && !listener.notThrow) - throw this.error; + try { + + await listener.process(); + + } catch(err) { + throw new SNSServerlessHandlerError(err, SNSServerlessHandlerError.codes.INTERNAL_ERROR); + } } /** @@ -50,30 +56,6 @@ class SNSServerlessDispatcher { throw new SNSServerlessHandlerError('Invalid message cannot parse the body from Records', SNSServerlessHandlerError.codes.INVALID_MESSAGE); } } - - /** - * Process the event and send to listener - * - * @static - * @param {ObjectConstructor} Listener - * @memberof SNSServerlessDispatcher - */ - static async process(listener) { - - try { - if(typeof listener.process !== 'function') - throw new SNSServerlessHandlerError('Process method is required and must be a function', SNSServerlessHandlerError.codes.PROCESS_NOT_FOUND); - - if(listener.struct) - listener.validate(); - - return listener.process(); - - } catch(err) { - this.error = new SNSServerlessHandlerError(err, SNSServerlessHandlerError.codes.INTERNAL_ERROR); - } - } - } module.exports = SNSServerlessDispatcher; diff --git a/tests/sns/serverless/handler.js b/tests/sns/serverless/handler.js index 377a914..0a2ef46 100644 --- a/tests/sns/serverless/handler.js +++ b/tests/sns/serverless/handler.js @@ -1,7 +1,6 @@ 'use strict'; const assert = require('assert'); - const sandbox = require('sinon').createSandbox(); const { SNSServerlessHandler, SNSListener } = require('../../../lib'); @@ -111,33 +110,33 @@ describe('Serverless Handler Test', () => { }); }); - // it('Should throw an error when process is not found', () => { + it('Should throw an error when process is not found', () => { - // const ListernerTestWithoutProcess = function() {}; + const ListernerTestWithoutProcess = function() {}; - // assert.rejects(SNSServerlessHandler.handle(ListernerTestWithoutProcess, event), { - // name: 'SNSServerlessHandlerError', - // code: 4, - // message: 'Process method is required and must be a function' - // }); - // }); + assert.rejects(SNSServerlessHandler.handle(ListernerTestWithoutProcess, event), { + name: 'SNSServerlessHandlerError', + code: 4, + message: 'Process method is required and must be a function' + }); + }); - // it('Should throw an error when process throws an error', () => { + it('Should throw an error when process throws an error', async () => { - // const error = new Error('This is an error originated on listener process method'); + const error = new Error('This is an error originated on listener process method'); - // const ListernerTestProcessError = function() {}; - // ListernerTestProcessError.prototype.process = async function() { - // throw error; - // }; + const ListernerTestProcessError = function() {}; + ListernerTestProcessError.prototype.process = async function() { + throw error; + }; - // assert.rejects(SNSServerlessHandler.handle(ListernerTestProcessError, event), { - // name: 'SNSServerlessHandlerError', - // code: 5, - // message: 'This is an error originated on listener process method', - // previousError: error - // }); - // }); + await assert.rejects(SNSServerlessHandler.handle(ListernerTestProcessError, event), { + name: 'SNSServerlessHandlerError', + code: 5, + message: 'This is an error originated on listener process method', + previousError: error + }); + }); it('Should process the event and set the properties to listener', () => {