From 6a6d1b27aadc7e855a6eff4ccaa9533cbbc8dc7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mose=20M=C3=BCller?= Date: Mon, 8 Jan 2024 16:35:32 +0100 Subject: [PATCH] updates sio_setup tests (removes mock objects) --- tests/server/web_server/test_sio_setup.py | 75 ++++++++++------------- 1 file changed, 33 insertions(+), 42 deletions(-) diff --git a/tests/server/web_server/test_sio_setup.py b/tests/server/web_server/test_sio_setup.py index f59dabc..674bf27 100644 --- a/tests/server/web_server/test_sio_setup.py +++ b/tests/server/web_server/test_sio_setup.py @@ -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 = {