# -*- coding: utf-8 -*- from unittest import mock from bthlabs_jsonrpc_core import registry def test_init(): # When result = registry.MethodRegistry() # Then assert result.registry == {'jsonrpc': {}} @mock.patch.object(registry.MethodRegistry, '__init__') def test_shared_registry(mock_init): # Given mock_init.return_value = None # When result = registry.MethodRegistry.shared_registry() # Then assert isinstance(result, registry.MethodRegistry) assert registry.MethodRegistry.INSTANCE is result assert mock_init.called is True # After registry.MethodRegistry.INSTANCE = None @mock.patch.object(registry.MethodRegistry, '__init__') def test_shared_registry_with_instance(mock_init, fake_method_registry): # Given mock_init.return_value = None registry.MethodRegistry.INSTANCE = fake_method_registry # When result = registry.MethodRegistry.shared_registry() # Then assert result is fake_method_registry assert registry.MethodRegistry.INSTANCE is fake_method_registry assert mock_init.called is False # After registry.MethodRegistry.INSTANCE = None def test_register_method(fake_handler): # Given the_registry = registry.MethodRegistry() # When' the_registry.register_method('testing', 'test', fake_handler) # Then expected_namespace = {'test': fake_handler} assert the_registry.registry['testing'] == expected_namespace def test_register_method_existing_namespace(fake_handler): # Given spam_handler = mock.Mock() the_registry = registry.MethodRegistry() the_registry.registry['jsonrpc']['spam'] = spam_handler # When' the_registry.register_method('jsonrpc', 'test', fake_handler) # Then expected_namespace = {'spam': spam_handler, 'test': fake_handler} assert the_registry.registry['jsonrpc'] == expected_namespace def test_get_methods(): # Given the_registry = registry.MethodRegistry() the_registry.registry['jsonrpc']['spam'] = mock.Mock() the_registry.registry['jsonrpc']['eggs'] = mock.Mock() # When' result = the_registry.get_methods('jsonrpc') # Then expected_methods = {'spam', 'eggs'} assert set(result) == expected_methods def test_get_handler(fake_handler): # Given spam_handler = mock.Mock() the_registry = registry.MethodRegistry() the_registry.registry['jsonrpc']['spam'] = spam_handler the_registry.registry['jsonrpc']['eggs'] = fake_handler # When' result = the_registry.get_handler('jsonrpc', 'eggs') # Then assert result is fake_handler