def test_event_pipeline_output(): import sys from io import StringIO out = StringIO() sys.stdout = out event_manager = EventManager() def test_listener_1(bot=None): bot() def test_listener_2(bot=None): bot() def test_listener_3(bot=None): bot() def test_listener_4(bot=None): bot() event_manager.add_listener('test1', test_listener_1, priority=-100) event_manager.add_listener('test1', test_listener_2, priority=0) event_manager.add_listener('test1', test_listener_3, priority=0) event_manager.add_listener('test1', test_listener_4, priority=100) event_manager.add_listener('test2', test_listener_1, priority=100) event_manager.print_all_event_pipelines() assert 'Event pipeline for "test1":' in out.getvalue().strip() assert '-100 (test_listener_1) -> 0 (test_listener_2 -> test_listener_3) -> 100 (test_listener_4)' in out.getvalue( ).strip() assert 'Event pipeline for "test2":' in out.getvalue().strip() assert '100 (test_listener_1)' in out.getvalue().strip()
def test_add_listener(): event_manager = EventManager() test_listener = Mock() event_manager.add_listener('test', test_listener) assert isinstance(event_manager.events['test'], Event) assert len(event_manager.events['test'].listeners[0]) == 1
def test_get_registered_events(): event_manager = EventManager() test_listener = Mock() event_manager.add_listener('test', test_listener) events = event_manager.get_registered_events() assert len(events) == 1 assert 'test' in events
def test_event_pipeline_output(): import sys from io import StringIO out = StringIO() sys.stdout = out event_manager = EventManager() def test_listener_1(bot=None): bot() def test_listener_2(bot=None): bot() def test_listener_3(bot=None): bot() def test_listener_4(bot=None): bot() event_manager.add_listener('test1', test_listener_1, priority=-100) event_manager.add_listener('test1', test_listener_2, priority=0) event_manager.add_listener('test1', test_listener_3, priority=0) event_manager.add_listener('test1', test_listener_4, priority=100) event_manager.add_listener('test2', test_listener_1, priority=100) event_manager.print_all_event_pipelines() assert 'Event pipeline for "test1":' in out.getvalue().strip() assert '-100 (test_listener_1) -> 0 (test_listener_2 -> test_listener_3) -> 100 (test_listener_4)' in out.getvalue().strip() assert 'Event pipeline for "test2":' in out.getvalue().strip() assert '100 (test_listener_1)' in out.getvalue().strip()
def test_add_listener_priorities(): event_manager = EventManager() test_listener = Mock() event_manager.add_listener('test', test_listener, priority=-100) event_manager.add_listener('test', test_listener, priority=100) assert isinstance(event_manager.events['test'], Event) assert len(event_manager.events['test'].listeners[-100]) == 1 assert len(event_manager.events['test'].listeners[100]) == 1
def test_fire_with_context(): event_manager = EventManager() def test_listener(bot=None): bot() event_manager.add_listener('test', test_listener, priority=-100) bot = Mock() event_manager.fire_with_context('test', bot) bot.assert_called_once()
def test_event_pipeline_no_listeners(): import sys from io import StringIO out = StringIO() sys.stdout = out event_manager = EventManager() event_manager.events['test'] = Event('test') event_manager.events['test'].listeners['test_listener'] = [] event_manager.print_all_event_pipelines() assert 'Event pipeline for "test" is empty.' in out.getvalue().strip()
def test_fire_no_listeners(): import sys from io import StringIO out = StringIO() sys.stdout = out event_manager = EventManager() event_manager.events['test'] = Event('test') event_manager.fire('test', value=None) assert 'WARNING: No handler has registered to handle event "test"' in out.getvalue().strip()
def test_remove_listener(): event_manager = EventManager() test_listener = Mock() event_manager.add_listener('test', test_listener, priority=10) assert isinstance(event_manager.events['test'], Event) assert len(event_manager.events['test'].listeners) == 1 event_manager.remove_listener('test', test_listener) assert isinstance(event_manager.events['test'], Event) assert len(event_manager.events['test'].listeners[10]) == 0
def test_fire_no_listeners(): import sys from io import StringIO out = StringIO() sys.stdout = out event_manager = EventManager() event_manager.events['test'] = Event('test') event_manager.fire('test', value=None) assert 'WARNING: No handler has registered to handle event "test"' in out.getvalue( ).strip()
def test_init(): logger = Mock() logger.log = Mock(return_value=None) config_namespace = create_core_test_config() api_wrapper = create_mock_api_wrapper(config_namespace) event_manager = EventManager() player_service = Player(api_wrapper, event_manager, logger) pokemon_service = PokemonService(api_wrapper) mapper = Mapper(config_namespace, api_wrapper, Mock(), logger) path_finder = DirectPathFinder(config_namespace) stepper = Stepper(config_namespace, api_wrapper, path_finder, logger) navigator = FortNavigator(config_namespace, api_wrapper) bot = PokemonGoBot(config_namespace, api_wrapper, player_service, pokemon_service, event_manager, mapper, stepper, navigator, logger) assert len(bot.pokemon_list) == 151 assert len(bot.item_list) == 30 assert bot.position == (0, 0, 0) assert bot.config is config_namespace assert bot.api_wrapper is api_wrapper assert bot.player_service is player_service assert bot.pokemon_service is pokemon_service assert bot.event_manager is event_manager assert bot.mapper is mapper assert bot.stepper is stepper assert bot.navigator is navigator assert bot.logger is logger
def test_fire_cancelled(): event_manager = EventManager() def test_listener(): return {'value': 'first'} def test_listener_late(): return False event_manager.add_listener('test', test_listener_late, priority=100) event_manager.add_listener('test', test_listener, priority=-100) return_data = event_manager.fire('test', value=None) assert return_data is False
def create_mock_bot(user_config=None): config_namespace = create_core_test_config(user_config) event_manager = EventManager() logger = Logger(event_manager) api_wrapper = create_mock_api_wrapper(config_namespace) player_service = Player(api_wrapper, event_manager, logger) pokemon_service = Pokemon(api_wrapper) mapper = Mapper(config_namespace, api_wrapper, Mock(), logger) path_finder = DirectPathFinder(config_namespace) stepper = Stepper(config_namespace, api_wrapper, path_finder, logger) navigator = FortNavigator(config_namespace, api_wrapper) bot = PokemonGoBot(config_namespace, api_wrapper, player_service, pokemon_service, event_manager, mapper, stepper, navigator, logger) return bot
def test_fire(): event_manager = EventManager() # pylint: disable=unused-argument def test_listener(value=None): return {'value': 'first'} # pylint: disable=unused-argument def test_listener_late(value=None): return {'value': 'second'} event_manager.add_listener('test', test_listener_late, priority=100) event_manager.add_listener('test', test_listener, priority=-100) return_data = event_manager.fire('test', value=None) assert return_data['value'] == 'second'
def create_test_kernel(user_config=None): # type: (Dict) -> ServiceContainer kernel = Kernel() config = create_core_test_config(user_config) kernel.container.register_singleton('config', config) kernel.container.register_singleton('pgoapi', PGoApiMock()) kernel.container.register_singleton( 'plugin_manager', PluginManager( os.path.dirname(os.path.realpath(__file__)) + '/plugins')) kernel.container.register_singleton('event_manager', EventManager()) kernel.container.set_parameter('path_finder', config['movement']['path_finder']) kernel.container.set_parameter('navigator', config['movement']['path_finder']) return kernel
def test_fire_cancelled(): event_manager = EventManager() def test_listener(): return { 'value': 'first' } def test_listener_late(): return False event_manager.add_listener('test', test_listener_late, priority=100) event_manager.add_listener('test', test_listener, priority=-100) return_data = event_manager.fire('test', value=None) assert return_data is False
def test_fire(): event_manager = EventManager() # pylint: disable=unused-argument def test_listener(value=None): return { 'value': 'first' } # pylint: disable=unused-argument def test_listener_late(value=None): return { 'value': 'second' } event_manager.add_listener('test', test_listener_late, priority=100) event_manager.add_listener('test', test_listener, priority=-100) return_data = event_manager.fire('test', value=None) assert return_data['value'] == 'second'
import logging import socketio from flask import Flask from pokemongo_bot.event_handlers import LoggingHandler from pokemongo_bot.event_manager import EventManager sio = socketio.Server(async_mode='eventlet', logging=logging.NullHandler) app = Flask(__name__) event_manager = EventManager() event_manager.add_handler(LoggingHandler()) event_manager.register_event( "websocket_client_connected", ) # client asks for data @sio.on('remote:send_request') def remote_control(sid, command): sio.emit('bot:process_request', data=command) # sending bot response to client @sio.on('bot:send_reply') def request_reply(sid, response): sio.emit(response['command'], response['response']) @sio.on('bot:broadcast') def bot_broadcast(sid, env): sio.emit(env['event'], data=env['data'])
def __init__(self): self.config = MagicMock(websocket_server_url=False, show_events=False) self.api = FakeApi() self.event_manager = EventManager(None) self._setup_event_system(None)