mirror of
https://github.com/bigchaindb/bigchaindb.git
synced 2024-10-13 13:34:05 +00:00

* Problem: we have unused and outdated fixtures Solution: clean up fixtures and tests accordingly * Problem: there are still unused fixtures Solution: remove Merlin keys * Problem: There are unnecessary markers Solution: remove the tendermint marker for tests
77 lines
2.0 KiB
Python
77 lines
2.0 KiB
Python
# Copyright BigchainDB GmbH and BigchainDB contributors
|
|
# SPDX-License-Identifier: (Apache-2.0 AND CC-BY-4.0)
|
|
# Code is Apache-2.0 and docs are CC-BY-4.0
|
|
|
|
from functools import singledispatch
|
|
from types import ModuleType
|
|
|
|
import pytest
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_module():
|
|
return ModuleType('mock_module')
|
|
|
|
|
|
def test_module_dispatch_registers(mock_module):
|
|
from bigchaindb.backend.utils import module_dispatch_registrar
|
|
|
|
@singledispatch
|
|
def dispatcher(t):
|
|
pass
|
|
mock_module.dispatched = dispatcher
|
|
mock_dispatch = module_dispatch_registrar(mock_module)
|
|
|
|
@mock_dispatch(str)
|
|
def dispatched(t):
|
|
pass
|
|
|
|
assert mock_module.dispatched.registry[str] == dispatched
|
|
|
|
|
|
def test_module_dispatch_dispatches(mock_module):
|
|
from bigchaindb.backend.utils import module_dispatch_registrar
|
|
|
|
@singledispatch
|
|
def dispatcher(t):
|
|
return False
|
|
mock_module.dispatched = dispatcher
|
|
mock_dispatch = module_dispatch_registrar(mock_module)
|
|
|
|
@mock_dispatch(str)
|
|
def dispatched(t):
|
|
return True
|
|
|
|
assert mock_module.dispatched(1) is False # Goes to dispatcher()
|
|
assert mock_module.dispatched('1') is True # Goes to dispatched()
|
|
|
|
|
|
def test_module_dispatch_errors_on_missing_func(mock_module):
|
|
from bigchaindb.backend.utils import (
|
|
module_dispatch_registrar,
|
|
ModuleDispatchRegistrationError,
|
|
)
|
|
mock_dispatch = module_dispatch_registrar(mock_module)
|
|
|
|
with pytest.raises(ModuleDispatchRegistrationError):
|
|
@mock_dispatch(str)
|
|
def dispatched():
|
|
pass
|
|
|
|
|
|
def test_module_dispatch_errors_on_non_dispatchable_func(mock_module):
|
|
from bigchaindb.backend.utils import (
|
|
module_dispatch_registrar,
|
|
ModuleDispatchRegistrationError,
|
|
)
|
|
|
|
def dispatcher():
|
|
pass
|
|
mock_module.dispatched = dispatcher
|
|
mock_dispatch = module_dispatch_registrar(mock_module)
|
|
|
|
with pytest.raises(ModuleDispatchRegistrationError):
|
|
@mock_dispatch(str)
|
|
def dispatched():
|
|
pass
|