files.forEach(file => { try { let h = require(`./lib/eventhandlers/${file}`); //eslint-disable-line global-require if (Array.isArray(h.event)) { h.event.forEach(event => { plugged.on(event, h.handler); }); } else plugged.on(h.event, h.handler); story.debug('EventHandlers', `Loaded Handler for Event ${Array.isArray(h.event) ? h.event.join() : h.event}`); } catch (e) { story.error(`Failed to load eventhandler ${file}`, {attach: e}); process.exit(1); } });
handler: function(info, next) { var uid = info.uid; var u = info.user; var last_param = info.session.last_param; if (!last_param) { var loc = u.loc; if (loc) { info.ended = true; return douban.event.list({ loc: loc }, next); } return next(); } var act = last_param['_wx_act']; if (!act || !(act in douban.event)) return next(); try { // 实际得到的比想要的少,说明没有更多了 if (last_param.count > last_param._len) { info.param.start = 1; u.setPrev(null); delete last_param['_wx_act']; return next('NO_MORE'); } // will update info.session.last_param, cause // this variable is just an object reference if (!last_param.start) { last_param.start = 4; last_param['count'] = 4; } else { last_param.start += 4; } douban.event[act](last_param, function(err, ret) { info.ended = true; next(err, ret); }); } catch (e) { next(); } }
it('should exist plugin component and event', function(done) { var plugin = { components: mockBase + '/mock-plugin/components/', events: mockBase + '/mock-plugin/events/' }; var opts = {}; app.use(plugin, opts); should.exist(app.event.listeners('bind_session')); should.exist(app.components.mockPlugin); done(); });
it('should add servers and emit event and fetch the new server info by get methods', function(done) { var newServers = [ {id: 'connector-server-1', serverType: 'connecctor', host: '127.0.0.1', port: 1234, clientPort: 3000, frontend: true}, {id: 'area-server-1', serverType: 'area', host: '127.0.0.1', port: 2234} ]; app.init({base: mockBase}); app.event.on(pomelo.events.ADD_SERVERS, function(servers) { // check event args newServers.should.eql(servers); // check servers var curServers = app.getServers(); should.exist(curServers); var item, i, l; for(i=0, l=newServers.length; i<l; i++) { item = newServers[i]; item.should.eql(curServers[item.id]); } // check get server by id for(i=0, l=newServers.length; i<l; i++) { item = newServers[i]; item.should.eql(app.getServerById(item.id)); } // check server types var types = []; for(i=0, l=newServers.length; i<l; i++) { item = newServers[i]; if(types.indexOf(item.serverType) < 0) { types.push(item.serverType); } } var types2 = app.getServerTypes(); types.length.should.equal(types2.length); for(i=0, l=types.length; i<l; i++) { types2.should.include(types[i]); } // check server type list var slist; for(i=0, l=newServers.length; i<l; i++) { item = newServers[i]; slist = app.getServersByType(item.serverType); should.exist(slist); contains(slist, item).should.be.true; } done(); }); app.addServers(newServers); });
function attachModuleEventsAndDependencies() { var options = {maxListeners: calipso.config.get('server:events:maxListeners'), notifyDependencyFn: notifyDependenciesOfInit}; for (var module in calipso.modules) { // Register dependencies registerModuleDependencies(calipso.modules[module]); // Attach event listener calipso.event.addModuleEventListener(calipso.modules[module], options); } // Sweep through the dependency tree and make sure any broken dependencies are disabled disableBrokenDependencies(); }
function do_search() { var param = info.session.last_param = info.param; param['_wx_act'] = 'search'; info.ended = true; return douban.event.search(param, next); }
it('should remove server info and emit event', function(done) { var newServers = [ {id: 'connector-server-1', serverType: 'connecctor', host: '127.0.0.1', port: 1234, clientPort: 3000, frontend: true}, {id: 'area-server-1', serverType: 'area', host: '127.0.0.1', port: 2234}, {id: 'path-server-1', serverType: 'path', host: '127.0.0.1', port: 2235} ]; var destServers = [ {id: 'connector-server-1', serverType: 'connecctor', host: '127.0.0.1', port: 1234, clientPort: 3000, frontend: true}, {id: 'path-server-1', serverType: 'path', host: '127.0.0.1', port: 2235} ]; var delIds = ['area-server-1']; var addCount = 0; var delCount = 0; app.init({base: mockBase}); app.event.on(pomelo.events.ADD_SERVERS, function(servers) { // check event args newServers.should.eql(servers); addCount++; }); app.event.on(pomelo.events.REMOVE_SERVERS, function(ids) { delIds.should.eql(ids); // check servers var curServers = app.getServers(); should.exist(curServers); var item, i, l; for(i=0, l=destServers.length; i<l; i++) { item = destServers[i]; item.should.eql(curServers[item.id]); } // check get server by id for(i=0, l=destServers.length; i<l; i++) { item = destServers[i]; item.should.eql(app.getServerById(item.id)); } // check server types // NOTICE: server types would not clear when remove server from app var types = []; for(i=0, l=newServers.length; i<l; i++) { item = newServers[i]; if(types.indexOf(item.serverType) < 0) { types.push(item.serverType); } } var types2 = app.getServerTypes(); types.length.should.equal(types2.length); for(i=0, l=types.length; i<l; i++) { types2.should.include(types[i]); } // check server type list var slist; for(i=0, l=destServers.length; i<l; i++) { item = destServers[i]; slist = app.getServersByType(item.serverType); should.exist(slist); contains(slist, item).should.be.true; } done(); }); app.addServers(newServers); app.removeServers(delIds); });