def test_load_triggers(self): config = TriggerConfiguration() config._manager = TriggerConfiguration.LOCAL_MANAGER mgr = TriggerManager.load_trigger_manager(config) trigger_file = os.path.dirname(__file__) + os.sep + "triggers.txt" self.assertTrue(os.path.exists(trigger_file)) config = FileStorageConfiguration() config._triggers_storage = FileStoreConfiguration(file=trigger_file, format="text", encoding="utf-8", delete_on_start=False) engine = FileStorageEngine(config) engine.initialise() storage_factory = StorageFactory() storage_factory._storage_engines[StorageFactory.TRIGGERS] = engine storage_factory._store_to_engine_map[StorageFactory.TRIGGERS] = engine mgr.load_triggers(storage_factory) triggers = mgr.get_triggers("SYSTEM_STARTUP") self.assertIsNotNone(triggers) self.assertEquals(2, len(triggers)) triggers = mgr.get_triggers("SYSTEM_SHUTDOWN") self.assertIsNotNone(triggers) self.assertEquals(1, len(triggers)) triggers = mgr.get_triggers("CONVERSATION_START") self.assertIsNotNone(triggers) self.assertEquals(1, len(triggers))
def test_trigger_triggers(self): config = TriggerConfiguration() config._manager = "programytest.triggers.test_rest.MockRestTriggerManager" config._additionals["url"] = "http://localhost/api/1.0/ask" mgr = TriggerManager.load_trigger_manager(config) client = TestClient() client_context = client.create_client_context("testid") triggered = mgr.trigger("SYSTEM_STARTUP") self.assertTrue(triggered) triggered = mgr.trigger("SYSTEM_STARTUP", additional={"key": "value"}) self.assertTrue(triggered) triggered = mgr.trigger("CONVERSATION_START", client_context) self.assertTrue(triggered) triggered = mgr.trigger("OTHER_EVENT") self.assertTrue(triggered) triggered = mgr.trigger("OTHER_EVENT", client_context) self.assertTrue(triggered) triggered = mgr.trigger("OTHER_EVENT", client_context, additional={"key": "value"}) self.assertTrue(triggered)
def test_init_with_events(self): config = TriggerConfiguration() config._manager = TriggerConfiguration.LOCAL_MANAGER mgr = TriggerManager.load_trigger_manager(config) self.assertIsNotNone(mgr) self.assertIsInstance(mgr, TriggerManager)
def test_add_trigger(self): config = TriggerConfiguration() config._manager = TriggerConfiguration.LOCAL_MANAGER mgr = TriggerManager.load_trigger_manager(config) self.assertIsNotNone(mgr) mgr.add_trigger("SYSTEM_STARTUP", "programytest.triggers.trigger1.Trigger1") self.assertTrue("SYSTEM_STARTUP" in mgr.triggers)
def test_load_file_contents_with_exception(self): config = FileStorageConfiguration() engine = FileStorageEngine(config) engine.initialise() store = FileTriggersStore(engine) trigger_config = TriggerConfiguration() trigger_config._manager = TriggerConfiguration.LOCAL_MANAGER mgr = TriggerManager.load_trigger_manager(trigger_config) self.assertFalse(store._load_file_contents(os.path.dirname(__file__) + os.sep + "data" + os.sep + "triggers" + os.sep + "triggers.txt", mgr))
def test_trigger_exception(self): config = TriggerConfiguration() config._manager = TriggerConfiguration.LOCAL_MANAGER mgr = TriggerManager.load_trigger_manager(config) self.assertIsNotNone(mgr) mgr.add_trigger("SYSTEM_STARTUP", "programy.triggers.excepter.ExceptionTrigger") triggered = mgr.trigger("SYSTEM_STARTUP") self.assertTrue(triggered)
def test_process_line(self): config = FileStorageConfiguration() engine = FileStorageEngine(config) engine.initialise() store = FileTriggersStore(engine) trigger_config = TriggerConfiguration() trigger_config._manager = TriggerConfiguration.LOCAL_MANAGER mgr = TriggerManager.load_trigger_manager(trigger_config) self.assertFalse(store._process_line("", mgr)) self.assertFalse(store._process_line("TRIGGER1", mgr)) self.assertFalse(store._process_line("#", mgr)) self.assertFalse(store._process_line("#TRIGGER1:programy.triggers.null.NullTrigger", mgr))
def test_add_triggers(self): config = TriggerConfiguration() config._manager = TriggerConfiguration.LOCAL_MANAGER mgr = TriggerManager.load_trigger_manager(config) self.assertIsNotNone(mgr) mgr.add_triggers({ "SYSTEM_STARTUP": "programytest.triggers.trigger1.Trigger1", "SYSTEM_SHUTDOWN": "programytest.triggers.trigger1.Trigger1", "CONVERSATION_START": "programytest.triggers.trigger1.Trigger1" }) self.assertTrue("SYSTEM_STARTUP" in mgr.triggers) self.assertTrue("SYSTEM_SHUTDOWN" in mgr.triggers) self.assertTrue("CONVERSATION_START" in mgr.triggers)
def test_load_triggers(self): config = FileStorageConfiguration() config._triggers_storage = FileStoreConfiguration(file=os.path.dirname(__file__) + os.sep + "data" + os.sep + "triggers" + os.sep + "triggers.txt", fileformat="text", encoding="utf-8", delete_on_start=False) engine = FileStorageEngine(config) engine.initialise() store = FileTriggersStore(engine) trigger_config = TriggerConfiguration() trigger_config._manager = TriggerConfiguration.LOCAL_MANAGER mgr = TriggerManager.load_trigger_manager(trigger_config) store.load(mgr) self.assertTrue(mgr.has_trigger_event("TRIGGER1")) self.assertTrue(mgr.has_trigger_event("TRIGGER2")) self.assertTrue(mgr.has_trigger_event("TRIGGER3")) self.assertFalse(mgr.has_trigger_event("TRIGGER4"))
def test_trigger_triggers(self): config = TriggerConfiguration() config._manager = TriggerConfiguration.LOCAL_MANAGER mgr = TriggerManager.load_trigger_manager(config) trigger_file = os.path.dirname(__file__) + os.sep + "triggers.txt" config = FileStorageConfiguration() config._triggers_storage = FileStoreConfiguration( file=trigger_file, format="text", encoding="utf-8", delete_on_start=False) engine = FileStorageEngine(config) engine.initialise() storage_factory = StorageFactory() storage_factory._storage_engines[StorageFactory.TRIGGERS] = engine storage_factory._store_to_engine_map[StorageFactory.TRIGGERS] = engine mgr.load_triggers(storage_factory) client = TestClient() client_context = client.create_client_context("testid") triggered = mgr.trigger("SYSTEM_STARTUP") self.assertTrue(triggered) triggered = mgr.trigger("SYSTEM_STARTUP", additional={"key": "value"}) self.assertTrue(triggered) triggered = mgr.trigger("CONVERSATION_START", client_context) self.assertTrue(triggered) triggered = mgr.trigger("OTHER_EVENT") self.assertFalse(triggered) triggered = mgr.trigger("OTHER_EVENT", client_context) self.assertFalse(triggered) triggered = mgr.trigger("OTHER_EVENT", client_context, additional={"key": "value"}) self.assertFalse(triggered)
def test_load_triggers_bad_triggers(self): config = TriggerConfiguration() config._manager = TriggerConfiguration.LOCAL_MANAGER mgr = TriggerManager.load_trigger_manager(config) trigger_file = os.path.dirname(__file__) + os.sep + "bad_triggers.txt" self.assertTrue(os.path.exists(trigger_file)) config = FileStorageConfiguration() config._triggers_storage = FileStoreConfiguration(file=trigger_file, fileformat="text", encoding="utf-8", delete_on_start=False) engine = FileStorageEngine(config) engine.initialise() storage_factory = StorageFactory() storage_factory._storage_engines[StorageFactory.TRIGGERS] = engine storage_factory._store_to_engine_map[StorageFactory.TRIGGERS] = engine mgr.load_triggers(storage_factory)
def test_load_triggers_no_engine(self): config = TriggerConfiguration() config._manager = TriggerConfiguration.LOCAL_MANAGER mgr = TriggerManager.load_trigger_manager(config) trigger_file = os.path.dirname(__file__) + os.sep + "triggers.txt" self.assertTrue(os.path.exists(trigger_file)) config = FileStorageConfiguration() config._triggers_storage = FileStoreConfiguration(file=trigger_file, fileformat="text", encoding="utf-8", delete_on_start=False) engine = FileStorageEngine(config) engine.initialise() storage_factory = StorageFactory() mgr.load_triggers(storage_factory) self.assertFalse("SYSTEM_STARTUP" in mgr.triggers) self.assertFalse("SYSTEM_SHUTDOWN" in mgr.triggers) self.assertFalse("CONVERSATION_START" in mgr.triggers)
def load_trigger_manager(self): if self._configuration.client_configuration.triggers is not None: YLogger.debug(None, "Loading Trigger Manager") self._trigger_mgr = TriggerManager.load_trigger_manager( self._configuration.client_configuration.triggers)
def __init__(self, config: TriggerConfiguration): TriggerManager.__init__(self, config)
def test_init(self): mgr = TriggerManager(TriggerConfiguration()) self.assertIsNotNone(mgr)
def test_load_trigger_manager_no_config(self): config = TriggerConfiguration() config._manager = None mgr = TriggerManager.load_trigger_manager(config) self.assertIsNone(mgr)
def test_load_trigger_manager_bad_manager(self): config = TriggerConfiguration() config._manager = "some.class.or.other" mgr = TriggerManager.load_trigger_manager(config) self.assertIsNone(mgr)
def test_create(self): config = TriggerConfiguration() config._manager = TriggerConfiguration.REST_MANAGER mgr = TriggerManager.load_trigger_manager(config) self.assertIsNotNone(mgr)