UNPKG

@incdevco/framework

Version:
146 lines (81 loc) 2.83 kB
var Expect = require('chai').expect; var Mock = require('../../mock'); var sinon = require('sinon'); var Lambda = require('./index'); var sandbox = sinon.sandbox.create(); describe('lambda cognito-sync', function () { 'use strict'; var config, lambda, mock; beforeEach(function () { config = {}; lambda = new Lambda(config); mock = new Mock(); sandbox.stub(lambda, 'log'); }); afterEach(function() { sandbox.verifyAndRestore(); }); describe('handler', function() { it('should', function (done) { var context, event, expected; context = { fail: done, succeed: function (result) { Expect(result).to.deep.equal(expected, 'result'); mock.done(done); } }; event = require('./example-event.json'); expected = JSON.parse(JSON.stringify(event)); expected.datasetRecords.test = { newValue: 'edited', op: 'replace' }; lambda.register('datasetName', function (event) { event.datasetRecords.test = expected.datasetRecords.test; return true; }); lambda.handler(event, context); }); it('should resolve if no handler for dataset', function (done) { var context, event, expected; context = { fail: done, succeed: function (result) { Expect(result).to.deep.equal(expected, 'result'); mock.done(done); } }; event = require('./example-event.json'); expected = JSON.parse(JSON.stringify(event)); lambda.handler(event, context); }); it('should catch any exception thrown by handler', function (done) { var context, event, expected; context = { succeed: done, fail: function (exception) { Expect(exception).to.deep.equal(expected, 'exception'); mock.done(done); } }; event = require('./example-event.json'); expected = new Error('expected'); lambda.register('datasetName', function (event) { throw expected; }); lambda.handler(event, context); }); }); describe('register', function() { it('should', function () { var dataset = 'dataset'; var handler = 'handler'; lambda.register(dataset, handler); Expect(lambda.handlers[dataset]).to.equal(handler, 'handler'); }); }); afterEach(function () { mock.restore(); }); });