UNPKG

simple-swf

Version:

Actually simple API layer for AWS SWF

110 lines 6.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var chai_1 = require("chai"); var SWFConfig_1 = require("../src/SWFConfig"); var entities_1 = require("../src/entities"); describe('SWFConfig', function () { describe('constructor', function () { var config = new SWFConfig_1.SWFConfig(); it('should set merged defaults', function () { chai_1.assert.equal(config.defaults['activity']['heartbeatTimeout'].value, 120); }); var overriden = new SWFConfig_1.SWFConfig({ activity: { startToCloseTimeout: 20 } }); it('should set merged defaults with overrides', function () { chai_1.assert.equal(overriden.defaults['activity']['startToCloseTimeout'].value, 20); chai_1.assert.notEqual(overriden.defaults['workflow']['startToCloseTimeout'].value, 20); }); }); describe('applyOverrideConfig', function () { var config = new SWFConfig_1.SWFConfig(); it('should override values correctly', function () { var group = config.applyOverrideConfig(entities_1.Domain.getDefaultConfig(), { description: 'new desc' }); chai_1.assert.equal(group['description'].value, 'new desc'); }); it('should add new values correctly', function () { var group = config.applyOverrideConfig(entities_1.Domain.getDefaultConfig(), { myValue: 'new desc', numValue: 0 }); chai_1.assert.equal(group['myValue'].value, 'new desc'); chai_1.assert.equal(group['myValue'].unit, SWFConfig_1.ConfigDefaultUnit.String); chai_1.assert.equal(group['numValue'].unit, SWFConfig_1.ConfigDefaultUnit.Number); chai_1.assert.equal(group['numValue'].value, 0); }); }); describe('getParamsForApi', function () { var config = new SWFConfig_1.SWFConfig(); it('should grab the config values', function () { var configVals = config.getParamsForApi({ entities: ['activity'], api: 'respondDecisionTaskCompleted', attribute: 'scheduleActivityTaskDecisionAttributes' }); chai_1.assert.typeOf(configVals['heartbeatTimeout'].value, 'number'); chai_1.assert.equal(configVals['startToCloseTimeout'].value, 'NONE'); chai_1.assert(configVals['description'] == null); }); it('should reduce to only the single mapping ask for', function () { var configVals = config.getParamsForApi({ entities: ['activity'], api: 'registerActivityType' }); chai_1.assert.equal(configVals['startToCloseTimeout'].mappings.length, 1); chai_1.assert.equal(configVals['startToCloseTimeout'].mappings[0].api, 'registerActivityType'); }); it('should return an empty config group for invalid configs', function () { var configVals = config.getParamsForApi({ entities: ['activity'], api: 'fakeApi' }); chai_1.assert.deepEqual(configVals, {}); }); it('should handle an invalid entity by return empty config', function () { var configVals = config.getParamsForApi({ entities: ['marker'], api: 'fakeApi' }); chai_1.assert.deepEqual(configVals, {}); }); }); describe('getMappingName', function () { var config = new SWFConfig_1.SWFConfig(); it('should return the proper name of a config', function () { var decActName = config.getMappingName('heartbeatTimeout', { entities: ['activity'], api: 'respondDecisionTaskCompleted', attribute: 'scheduleActivityTaskDecisionAttributes' }); chai_1.assert.equal(decActName, 'heartbeatTimeout'); var regActName = config.getMappingName('heartbeatTimeout', { entities: ['activity'], api: 'registerActivityType' }); chai_1.assert.equal(regActName, 'defaultTaskHeartbeatTimeout'); }); it('should null if invalid api', function () { var badApi = config.getMappingName('heartbeatTimeout', { entities: ['activity'], api: 'noApi' }); chai_1.assert.isNull(badApi); var badConfig = config.getMappingName('fakeConfig', { entities: ['activity'], api: 'registerActivityType' }); chai_1.assert.isNull(badConfig); //valid entity type, but no config.. good enough for now var badEntity = config.getMappingName('heartbeatTimeout', { entities: ['marker'], api: 'registerActivityType' }); chai_1.assert.isNull(badEntity); }); }); describe('populateDefaults', function () { var config = new SWFConfig_1.SWFConfig(); it('should populate values for a given api', function () { var registerActivityVals = config.populateDefaults({ entities: ['activity'], api: 'registerActivityType' }); chai_1.assert.equal(registerActivityVals['defaultTaskHeartbeatTimeout'], '120', 'should be a string'); // strip out values that default to null chai_1.assert.isUndefined(registerActivityVals['description']); }); it('should properly use the format function', function () { var registerActivityVals = config.populateDefaults({ entities: ['workflow'], api: 'registerWorkflowType' }); chai_1.assert.deepEqual(registerActivityVals['defaultTaskList'], { name: 'simple-swf' }); }); it('should properly use overrides', function () { var overrides = { taskList: 'hello', startToCloseTimeout: 100 }; var registerActivityVals = config.populateDefaults({ entities: ['workflow'], api: 'registerWorkflowType' }, overrides); chai_1.assert.deepEqual(registerActivityVals['defaultTaskList'], { name: 'hello' }); chai_1.assert.deepEqual(registerActivityVals['defaultExecutionStartToCloseTimeout'], '100'); }); }); describe('getValueForParam', function () { var config = new SWFConfig_1.SWFConfig(); it('should return the value for entity and param', function () { chai_1.assert.equal(config.getValueForParam('activity', 'heartbeatTimeout'), 120); }); it('should handle missing stuff', function () { chai_1.assert.isNull(config.getValueForParam('marker', 'heartbeatTimeout')); chai_1.assert.isNull(config.getValueForParam('marker', 'fake')); }); }); }); //# sourceMappingURL=SWFConfigTest.js.map