1
0
bthlabs-jsonrpc/packages/bthlabs-jsonrpc-core/tests/registry/test_MethodRedistry.py
2024-01-15 20:20:10 +00:00

110 lines
2.7 KiB
Python

# -*- 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: mock.Mock):
# 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: mock.Mock,
fake_method_registry: mock.Mock):
# 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: mock.Mock):
# 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: mock.Mock):
# 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: mock.Mock):
# 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