Files
Antoni Nuñez Romeu 190b3d163d
Run Tests on Branches / Backend Tests (push) Successful in 3m38s
Run Tests on Branches / Frontend Tests (push) Successful in 3m28s
Restructure with Turborepo
2026-07-06 15:51:53 +02:00

103 lines
3.7 KiB
Python

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