Files
galaxy/test/unit/web/base/test_PageServingPluginManager.py
T
John Chilton 962a53e544 Allow run_unit_tests.sh to execute all unit tests in test/unit.
Basically adds __init__.py files to each subdirectory so nose detects these as Python module directories. Also modify dynamic loading of modules in Carl's test cases so the test case can be run with any cwd - including the Galaxy root directory as run_unit_tests.sh will use.

This should roughly double the number of unit tests buildbot runs.
2013-12-04 11:46:32 -06:00

129 lines
5.3 KiB
Python

"""
"""
import os
import imp
import unittest
utility = imp.load_source( 'utility', os.path.join( os.path.dirname( __file__ ), '../../util/utility.py' ) )
log = utility.set_up_filelogger( __name__ + '.log' )
utility.add_galaxy_lib_to_path( 'test/unit/web/base' )
from galaxy.web.base.pluginframework import PageServingPluginManager
import mock
# ----------------------------------------------------------------------------- globals
contents1 = """${what} ${you} ${say}"""
# -----------------------------------------------------------------------------
class PageServingPluginManager_TestCase( unittest.TestCase ):
def test_plugin_load( self ):
"""should attempt load if criteria met"""
mock_app_dir = mock.MockDir({
'plugins' : {
'plugin1' : {
'templates' : {},
'static' : {}
},
'plugin2' : {
'static' : {}
},
'plugin3' : {
'templates' : {}
},
'not_a_plugin1' : 'blerbler',
'not_a_plugin2' : {},
}
})
mock_app = mock.MockApp( mock_app_dir.root_path )
plugin_mgr = PageServingPluginManager( mock_app, 'test', directories_setting='plugins' )
app_path = mock_app_dir.root_path
expected_plugins_path = os.path.join( app_path, 'plugins' )
self.assertEqual( plugin_mgr.base_url, 'test' )
self.assertItemsEqual( plugin_mgr.directories, [ expected_plugins_path ] )
self.assertItemsEqual( plugin_mgr.plugins.keys(), [ 'plugin1', 'plugin2', 'plugin3' ] )
plugin1 = plugin_mgr.plugins[ 'plugin1' ]
self.assertEqual( plugin1.name, 'plugin1' )
self.assertEqual( plugin1.path, os.path.join( expected_plugins_path, 'plugin1' ) )
self.assertEqual( plugin1.base_url, '/'.join([ plugin_mgr.base_url, plugin1.name ]) )
self.assertTrue( plugin1.serves_static )
self.assertEqual( plugin1.static_path, os.path.join( plugin1.path, 'static' ) )
self.assertEqual( plugin1.static_url, '/'.join([ plugin1.base_url, 'static' ]) )
self.assertTrue( plugin1.serves_templates )
self.assertEqual( plugin1.template_path, os.path.join( plugin1.path, 'templates' ) )
self.assertEqual( plugin1.template_lookup.__class__.__name__, 'TemplateLookup' )
plugin2 = plugin_mgr.plugins[ 'plugin2' ]
self.assertEqual( plugin2.name, 'plugin2' )
self.assertEqual( plugin2.path, os.path.join( expected_plugins_path, 'plugin2' ) )
self.assertEqual( plugin2.base_url, '/'.join([ plugin_mgr.base_url, plugin2.name ]) )
self.assertTrue( plugin2.serves_static )
self.assertEqual( plugin2.static_path, os.path.join( plugin2.path, 'static' ) )
self.assertEqual( plugin2.static_url, '/'.join([ plugin2.base_url, 'static' ]) )
self.assertFalse( plugin2.serves_templates )
plugin3 = plugin_mgr.plugins[ 'plugin3' ]
self.assertEqual( plugin3.name, 'plugin3' )
self.assertEqual( plugin3.path, os.path.join( expected_plugins_path, 'plugin3' ) )
self.assertEqual( plugin3.base_url, '/'.join([ plugin_mgr.base_url, plugin3.name ]) )
self.assertFalse( plugin3.serves_static )
self.assertTrue( plugin3.serves_templates )
self.assertEqual( plugin1.template_path, os.path.join( plugin1.path, 'templates' ) )
self.assertEqual( plugin1.template_lookup.__class__.__name__, 'TemplateLookup' )
mock_app_dir.remove()
def test_plugin_static_map( self ):
""""""
mock_app_dir = mock.MockDir({
'plugins' : {
'plugin1' : {
'templates' : {},
'static' : {}
}
}
})
mock_app = mock.MockApp( mock_app_dir.root_path )
plugin_mgr = PageServingPluginManager( mock_app, 'test', directories_setting='plugins' )
app_path = mock_app_dir.root_path
expected_plugins_path = os.path.join( app_path, 'plugins' )
self.assertItemsEqual( plugin_mgr.plugins.keys(), [ 'plugin1' ] )
plugin = plugin_mgr.plugins[ 'plugin1' ]
self.assertEqual( plugin_mgr.get_static_urls_and_paths(), [( plugin.static_url, plugin.static_path )] )
mock_app_dir.remove()
def test_plugin_templates( self ):
""""""
mock_app_dir = mock.MockDir({
'plugins' : {
'plugin1' : {
'templates' : {
'test.mako' : contents1
},
}
}
})
mock_app = mock.MockApp( mock_app_dir.root_path )
plugin_mgr = PageServingPluginManager( mock_app, 'test', directories_setting='plugins' )
app_path = mock_app_dir.root_path
expected_plugins_path = os.path.join( app_path, 'plugins' )
self.assertItemsEqual( plugin_mgr.plugins.keys(), [ 'plugin1' ] )
plugin = plugin_mgr.plugins[ 'plugin1' ]
rendered = plugin_mgr.fill_template( mock.MockTrans(), plugin, 'test.mako',
what='Hey', you='Ho', say='HeyHey HoHo' )
self.assertEqual( rendered, 'Hey Ho HeyHey HoHo' )
mock_app_dir.remove()
if __name__ == '__main__':
unittest.main()