updates sio_setup tests (removes mock objects)

This commit is contained in:
Mose Müller 2024-01-08 16:35:32 +01:00
parent 2d3e7d8c1b
commit 6a6d1b27aa

View File

@ -1,10 +1,10 @@
import asyncio
import logging
from unittest.mock import AsyncMock, MagicMock
import pydase
import pytest
# Assuming your code is in a file named 'socket_server.py'
from pydase.data_service.data_service_observer import DataServiceObserver
from pydase.data_service.state_manager import StateManager
from pydase.server.web_server.sio_setup import (
RunMethodDict,
UpdateDict,
@ -14,56 +14,47 @@ from pydase.server.web_server.sio_setup import (
logger = logging.getLogger(__name__)
# Mocks
class MockObserver:
def __init__(self) -> None:
self.state_manager = MagicMock()
self.add_notification_callback = MagicMock()
# Create a mock service with a mock method
mock_service = MagicMock()
mock_service.test_method = lambda: logger.info("Triggered 'test_method'.")
# Assign the mock service to the state manager
self.state_manager.service = mock_service
class MockServer:
def __init__(self) -> None:
self.emit = AsyncMock()
@pytest.fixture
def mock_observer() -> MockObserver:
return MockObserver()
@pytest.fixture
def mock_sio() -> MagicMock:
return MagicMock()
@pytest.mark.asyncio
async def test_set_attribute_event(mock_observer: MockObserver) -> None:
server = setup_sio_server(mock_observer, False, asyncio.get_running_loop())
async def test_set_attribute_event() -> None:
class SubClass(pydase.DataService):
name = "SubClass"
class ServiceClass(pydase.DataService):
def __init__(self) -> None:
super().__init__()
self.sub_class = SubClass()
def some_method(self) -> None:
logger.info("Triggered 'test_method'.")
service_instance = ServiceClass()
state_manager = StateManager(service_instance)
observer = DataServiceObserver(state_manager)
server = setup_sio_server(observer, False, asyncio.get_running_loop())
test_sid = 1234
test_data: UpdateDict = {
"parent_path": "test.parent.path",
"name": "test_attr",
"value": "new_value",
"parent_path": "sub_class",
"name": "name",
"value": "new name",
}
server.handlers["/"]["set_attribute"](test_sid, test_data)
mock_observer.state_manager.set_service_attribute_value_by_path.assert_called_with(
path="test.parent.path.test_attr", value="new_value"
)
assert service_instance.sub_class.name == "new name"
@pytest.mark.asyncio
async def test_run_method_event(mock_observer, caplog: pytest.LogCaptureFixture):
server = setup_sio_server(mock_observer, False, asyncio.get_running_loop())
async def test_run_method_event(caplog: pytest.LogCaptureFixture):
class ServiceClass(pydase.DataService):
def test_method(self) -> None:
logger.info("Triggered 'test_method'.")
state_manager = StateManager(ServiceClass())
observer = DataServiceObserver(state_manager)
server = setup_sio_server(observer, False, asyncio.get_running_loop())
test_sid = 1234
test_data: RunMethodDict = {