mirror of
				https://github.com/gsi-upm/senpy
				synced 2025-10-31 07:28:16 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			72 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import os
 | |
| import logging
 | |
| 
 | |
| try:
 | |
|     import unittest.mock as mock
 | |
| except ImportError:
 | |
|     import mock
 | |
| from senpy.extensions import Senpy
 | |
| from flask import Flask
 | |
| from flask.ext.testing import TestCase
 | |
| 
 | |
| 
 | |
| class ExtensionsTest(TestCase):
 | |
|     def create_app(self):
 | |
|         self.app = Flask("test_extensions")
 | |
|         self.senpy = Senpy()
 | |
|         self.senpy.init_app(self.app)
 | |
|         self.dir = os.path.join(os.path.dirname(__file__), "..")
 | |
|         self.senpy.add_folder(self.dir)
 | |
|         return self.app
 | |
| 
 | |
|     def test_init(self):
 | |
|         """ Initialising the app with the extension.  """
 | |
|         assert hasattr(self.app, "senpy")
 | |
|         tapp = Flask("temp app")
 | |
|         self.senpy.init_app(tapp)
 | |
|         assert hasattr(tapp, "senpy")
 | |
| 
 | |
|     def test_discovery(self):
 | |
|         """ Discovery of plugins in given folders.  """
 | |
|         # noinspection PyProtectedMember
 | |
|         assert self.dir in self.senpy._search_folders
 | |
|         print self.senpy.plugins
 | |
|         assert "dummy" in self.senpy.plugins
 | |
| 
 | |
|     def test_enabling(self):
 | |
|         """ Enabling a plugin """
 | |
|         self.senpy.enable_plugin("dummy")
 | |
|         assert self.senpy.plugins["dummy"].enabled
 | |
| 
 | |
|     def test_disabling(self):
 | |
|         """ Disabling a plugin """
 | |
|         self.senpy.enable_plugin("dummy")
 | |
|         self.senpy.disable_plugin("dummy")
 | |
|         assert not self.senpy.plugins["dummy"].enabled
 | |
| 
 | |
|     def test_default(self):
 | |
|         """ Default plugin should be set """
 | |
|         assert self.senpy.default_plugin
 | |
|         assert self.senpy.default_plugin == "dummy"
 | |
| 
 | |
|     def test_analyse(self):
 | |
|         """ Using a plugin """
 | |
|         with mock.patch.object(self.senpy.plugins["dummy"], "analyse") as mocked:
 | |
|             self.senpy.analyse(algorithm="dummy", input="tupni", output="tuptuo")
 | |
|             self.senpy.analyse(input="tupni", output="tuptuo")
 | |
|         mocked.assert_any_call(input="tupni", output="tuptuo", algorithm="dummy")
 | |
|         mocked.assert_any_call(input="tupni", output="tuptuo")
 | |
|         for plug in self.senpy.plugins:
 | |
|             self.senpy.disable_plugin(plug)
 | |
|         resp = self.senpy.analyse(input="tupni")
 | |
|         logging.debug("Response: {}".format(resp))
 | |
|         assert resp["status"] == 400
 | |
| 
 | |
|     def test_filtering(self):
 | |
|         """ Filtering plugins """
 | |
|         assert len(self.senpy.filter_plugins(name="dummy")) > 0
 | |
|         assert not len(self.senpy.filter_plugins(name="notdummy"))
 | |
|         assert self.senpy.filter_plugins(name="dummy", enabled=True)
 | |
|         self.senpy.disable_plugin("dummy")
 | |
|         assert not len(self.senpy.filter_plugins(name="dummy", enabled=True))
 |