mirror of
https://github.com/sprockets/sprockets.cli.git
synced 2024-09-28 10:10:59 +00:00
68 lines
2.5 KiB
Python
68 lines
2.5 KiB
Python
|
"""
|
||
|
Test the Sprockets Command Line Interface
|
||
|
|
||
|
"""
|
||
|
try:
|
||
|
import unittest2 as unittest
|
||
|
except ImportError:
|
||
|
import unittest
|
||
|
|
||
|
import mock
|
||
|
|
||
|
from sprockets import cli
|
||
|
|
||
|
|
||
|
class InitializationTests(unittest.TestCase):
|
||
|
|
||
|
@mock.patch('argparse.ArgumentParser.parse_args')
|
||
|
@mock.patch('pkg_resources.iter_entry_points')
|
||
|
@mock.patch('importlib.import_module')
|
||
|
def setUp(self, import_module, iter_entry_points, parse_args):
|
||
|
self.import_module = import_module
|
||
|
self.iter_entry_points = iter_entry_points
|
||
|
self.parse_args = parse_args
|
||
|
|
||
|
self.app_points = [mock.Mock(name='test_app',
|
||
|
module_name='mock_app')]
|
||
|
self.ctrl_points = [mock.Mock(name='test_http',
|
||
|
module_name='mock_http')]
|
||
|
self.plugin_points = [mock.Mock(name='test_plugin',
|
||
|
module_name='mock_plugin')]
|
||
|
|
||
|
self.mock_app = mock.Mock()
|
||
|
self.mock_controller = mock.Mock()
|
||
|
self.mock_controller.add_cli_arguments = self.add_cli_arguments = \
|
||
|
mock.Mock()
|
||
|
self.mock_plugin = mock.Mock()
|
||
|
|
||
|
def entry_point_side_effect(*args, **kwargs):
|
||
|
if kwargs.get('group') == 'sprockets.controller':
|
||
|
return self.ctrl_points
|
||
|
elif kwargs.get('group') == 'sprockets.plugin':
|
||
|
return self.plugin_points
|
||
|
elif kwargs.get('group') == 'sprockets.test_http.app':
|
||
|
return self.app_points
|
||
|
self.iter_entry_points.side_effect = entry_point_side_effect
|
||
|
|
||
|
def import_module_side_effect(*args, **kwargs):
|
||
|
if args[0] == 'mock_app':
|
||
|
return self.mock_app
|
||
|
elif args[0] == 'mock_http':
|
||
|
return self.mock_controller
|
||
|
elif args[0] == 'mock_plugin':
|
||
|
return self.mock_plugin
|
||
|
self.import_module.side_effect = import_module_side_effect
|
||
|
self.obj = cli.CLI()
|
||
|
|
||
|
def test_pkg_resources_iterated(self):
|
||
|
calls = [mock.call(group='sprockets.controller'),
|
||
|
mock.call(group='sprockets.plugin')]
|
||
|
self.iter_entry_points.assert_has_calls(calls)
|
||
|
|
||
|
def test_controller_packages_imported(self):
|
||
|
self.import_module.assert_has_calls([mock.call('mock_http'),
|
||
|
mock.call('mock_plugin')])
|
||
|
|
||
|
#def test_controller_argparse_method_invoked(self):
|
||
|
# self.add_cli_arguments.assert_called_once_with(self.obj.arg_parser)
|