Restructure with Turborepo
This commit is contained in:
@@ -0,0 +1,102 @@
|
||||
from uuid import uuid4
|
||||
|
||||
import pytest
|
||||
|
||||
from src.connectors.registry import ConnectorRegistry, _BUILTIN_CONNECTORS
|
||||
from src.connectors.mock.mock_connector import MockConnector
|
||||
from src.connectors.base import BaseInventoryConnector
|
||||
from src.core.exceptions import ConnectorException
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def registry() -> ConnectorRegistry:
|
||||
ConnectorRegistry._instance = None
|
||||
reg = ConnectorRegistry.get_registry()
|
||||
return reg
|
||||
|
||||
|
||||
class TestConnectorRegistrySingleton:
|
||||
def test_singleton(self, registry: ConnectorRegistry):
|
||||
reg2 = ConnectorRegistry.get_registry()
|
||||
assert reg2 is registry
|
||||
|
||||
def test_new_instance_after_reset(self, registry: ConnectorRegistry):
|
||||
ConnectorRegistry._instance = None
|
||||
reg2 = ConnectorRegistry.get_registry()
|
||||
assert reg2 is not registry
|
||||
|
||||
|
||||
class TestConnectorRegistryBuiltinTypes:
|
||||
def test_builtin_connectors_include_mock(self):
|
||||
assert "mock" in _BUILTIN_CONNECTORS
|
||||
|
||||
def test_builtin_connectors_include_farmatic(self):
|
||||
assert "farmatic" in _BUILTIN_CONNECTORS
|
||||
|
||||
def test_builtin_connectors_include_custom_rest(self):
|
||||
assert "custom_rest" in _BUILTIN_CONNECTORS
|
||||
|
||||
|
||||
class TestConnectorRegistryGetClass:
|
||||
def test_get_mock_connector_class(self, registry: ConnectorRegistry):
|
||||
cls = registry.get_connector_class("mock")
|
||||
assert cls is MockConnector
|
||||
|
||||
def test_get_unknown_type_raises(self, registry: ConnectorRegistry):
|
||||
with pytest.raises(ConnectorException, match="No connector registered"):
|
||||
registry.get_connector_class("nonexistent_type")
|
||||
|
||||
|
||||
class TestConnectorRegistryCreateInstance:
|
||||
def test_create_mock_instance(self, registry: ConnectorRegistry):
|
||||
instance = registry.create_instance("mock")
|
||||
assert isinstance(instance, BaseInventoryConnector)
|
||||
assert instance.connector_type == "mock"
|
||||
|
||||
def test_create_instance_with_config(self, registry: ConnectorRegistry):
|
||||
instance = registry.create_instance("mock", {"simulate_latency": False, "error_rate": 0.0})
|
||||
assert instance._simulate_latency is False
|
||||
|
||||
def test_create_unknown_type_raises(self, registry: ConnectorRegistry):
|
||||
with pytest.raises(ConnectorException):
|
||||
registry.create_instance("nonexistent")
|
||||
|
||||
|
||||
class TestConnectorRegistryInstanceCache:
|
||||
def test_get_or_create_returns_cached(self, registry: ConnectorRegistry):
|
||||
cid = uuid4()
|
||||
inst1 = registry.get_or_create_instance(cid, "mock")
|
||||
inst2 = registry.get_or_create_instance(cid, "mock")
|
||||
assert inst1 is inst2
|
||||
|
||||
def test_remove_instance(self, registry: ConnectorRegistry):
|
||||
cid = uuid4()
|
||||
registry.get_or_create_instance(cid, "mock")
|
||||
registry.remove_instance(cid)
|
||||
assert cid not in registry._instances
|
||||
|
||||
def test_remove_nonexistent_instance_no_error(self, registry: ConnectorRegistry):
|
||||
registry.remove_instance(uuid4())
|
||||
|
||||
|
||||
class TestConnectorRegistryListTypes:
|
||||
def test_list_registered_types(self, registry: ConnectorRegistry):
|
||||
types = registry.list_registered_types()
|
||||
assert "mock" in types
|
||||
assert "farmatic" in types
|
||||
assert "custom_rest" in types
|
||||
|
||||
def test_register_custom_type(self, registry: ConnectorRegistry):
|
||||
mock = MockConnector()
|
||||
mock.connector_type = "test_custom"
|
||||
registry.register("test_custom", mock)
|
||||
types = registry.list_registered_types()
|
||||
assert "test_custom" in types
|
||||
|
||||
def test_unregister_type(self, registry: ConnectorRegistry):
|
||||
mock = MockConnector()
|
||||
mock.connector_type = "temp_type"
|
||||
registry.register("temp_type", mock)
|
||||
registry.unregister("temp_type")
|
||||
types = registry.list_registered_types()
|
||||
assert "temp_type" not in types
|
||||
Reference in New Issue
Block a user