mirror of
				https://github.com/home-assistant/core.git
				synced 2025-10-31 14:39:27 +00:00 
			
		
		
		
	 3e967700fd
			
		
	
	3e967700fd
	
	
	
		
			
			* Add missing return type in test __init__ method (part 2) * Adjust * One more * One more * More
		
			
				
	
	
		
			103 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			103 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| """Common stuff for Fritz!Tools tests."""
 | |
| 
 | |
| import logging
 | |
| from unittest.mock import MagicMock, patch
 | |
| 
 | |
| from fritzconnection.core.processor import Service
 | |
| from fritzconnection.lib.fritzhosts import FritzHosts
 | |
| import pytest
 | |
| 
 | |
| from .const import (
 | |
|     MOCK_FB_SERVICES,
 | |
|     MOCK_HOST_ATTRIBUTES_DATA,
 | |
|     MOCK_MESH_DATA,
 | |
|     MOCK_MODELNAME,
 | |
| )
 | |
| 
 | |
| LOGGER = logging.getLogger(__name__)
 | |
| 
 | |
| 
 | |
| class FritzServiceMock(Service):
 | |
|     """Service mocking."""
 | |
| 
 | |
|     def __init__(self, serviceId: str, actions: dict) -> None:
 | |
|         """Init Service mock."""
 | |
|         super().__init__()
 | |
|         self._actions = actions
 | |
|         self.serviceId = serviceId
 | |
| 
 | |
| 
 | |
| class FritzConnectionMock:
 | |
|     """FritzConnection mocking."""
 | |
| 
 | |
|     def __init__(self, services) -> None:
 | |
|         """Init Mocking class."""
 | |
|         self.modelname = MOCK_MODELNAME
 | |
|         self.call_action = self._call_action
 | |
|         self._services = services
 | |
|         self.services = {
 | |
|             srv: FritzServiceMock(serviceId=srv, actions=actions)
 | |
|             for srv, actions in services.items()
 | |
|         }
 | |
|         LOGGER.debug("-" * 80)
 | |
|         LOGGER.debug("FritzConnectionMock - services: %s", self.services)
 | |
| 
 | |
|     def call_action_side_effect(self, side_effect=None) -> None:
 | |
|         """Set or unset a side_effect for call_action."""
 | |
|         if side_effect is not None:
 | |
|             self.call_action = MagicMock(side_effect=side_effect)
 | |
|         else:
 | |
|             self.call_action = self._call_action
 | |
| 
 | |
|     def override_services(self, services) -> None:
 | |
|         """Overrire services data."""
 | |
|         self._services = services
 | |
| 
 | |
|     def _call_action(self, service: str, action: str, **kwargs):
 | |
|         LOGGER.debug(
 | |
|             "_call_action service: %s, action: %s, **kwargs: %s",
 | |
|             service,
 | |
|             action,
 | |
|             {**kwargs},
 | |
|         )
 | |
|         if ":" in service:
 | |
|             service, number = service.split(":", 1)
 | |
|             service = service + number
 | |
|         elif not service[-1].isnumeric():
 | |
|             service = service + "1"
 | |
| 
 | |
|         if kwargs:
 | |
|             if (index := kwargs.get("NewIndex")) is None:
 | |
|                 index = next(iter(kwargs.values()))
 | |
| 
 | |
|             return self._services[service][action][index]
 | |
|         return self._services[service][action]
 | |
| 
 | |
| 
 | |
| @pytest.fixture(name="fc_data")
 | |
| def fc_data_mock():
 | |
|     """Fixture for default fc_data."""
 | |
|     return MOCK_FB_SERVICES
 | |
| 
 | |
| 
 | |
| @pytest.fixture
 | |
| def fc_class_mock(fc_data):
 | |
|     """Fixture that sets up a mocked FritzConnection class."""
 | |
|     with patch(
 | |
|         "homeassistant.components.fritz.coordinator.FritzConnection", autospec=True
 | |
|     ) as result:
 | |
|         result.return_value = FritzConnectionMock(fc_data)
 | |
|         yield result
 | |
| 
 | |
| 
 | |
| @pytest.fixture
 | |
| def fh_class_mock():
 | |
|     """Fixture that sets up a mocked FritzHosts class."""
 | |
|     with patch(
 | |
|         "homeassistant.components.fritz.coordinator.FritzHosts",
 | |
|         new=FritzHosts,
 | |
|     ) as result:
 | |
|         result.get_mesh_topology = MagicMock(return_value=MOCK_MESH_DATA)
 | |
|         result.get_hosts_attributes = MagicMock(return_value=MOCK_HOST_ATTRIBUTES_DATA)
 | |
|         yield result
 |