Move netatmo dataclass registrations (#65052)

This commit is contained in:
Joakim Sørensen 2022-01-28 10:51:32 +01:00 committed by GitHub
parent de7f1e793a
commit 0a2f57e4f8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 27 additions and 23 deletions

View file

@ -55,9 +55,6 @@ async def async_setup_entry(
"""Set up the Netatmo camera platform.""" """Set up the Netatmo camera platform."""
data_handler = hass.data[DOMAIN][entry.entry_id][DATA_HANDLER] data_handler = hass.data[DOMAIN][entry.entry_id][DATA_HANDLER]
await data_handler.register_data_class(
CAMERA_DATA_CLASS_NAME, CAMERA_DATA_CLASS_NAME, None
)
data_class = data_handler.data.get(CAMERA_DATA_CLASS_NAME) data_class = data_handler.data.get(CAMERA_DATA_CLASS_NAME)
if not data_class or not data_class.raw_data: if not data_class or not data_class.raw_data:

View file

@ -124,9 +124,6 @@ async def async_setup_entry(
"""Set up the Netatmo energy platform.""" """Set up the Netatmo energy platform."""
data_handler = hass.data[DOMAIN][entry.entry_id][DATA_HANDLER] data_handler = hass.data[DOMAIN][entry.entry_id][DATA_HANDLER]
await data_handler.register_data_class(
CLIMATE_TOPOLOGY_CLASS_NAME, CLIMATE_TOPOLOGY_CLASS_NAME, None
)
climate_topology = data_handler.data.get(CLIMATE_TOPOLOGY_CLASS_NAME) climate_topology = data_handler.data.get(CLIMATE_TOPOLOGY_CLASS_NAME)
if not climate_topology or climate_topology.raw_data == {}: if not climate_topology or climate_topology.raw_data == {}:

View file

@ -74,7 +74,7 @@ class NetatmoDataClass:
name: str name: str
interval: int interval: int
next_scan: float next_scan: float
subscriptions: list[CALLBACK_TYPE] subscriptions: list[CALLBACK_TYPE | None]
class NetatmoDataHandler: class NetatmoDataHandler:
@ -105,6 +105,18 @@ class NetatmoDataHandler:
) )
) )
await asyncio.gather(
*[
self.register_data_class(data_class, data_class, None)
for data_class in (
CLIMATE_TOPOLOGY_CLASS_NAME,
CAMERA_DATA_CLASS_NAME,
WEATHERSTATION_DATA_CLASS_NAME,
HOMECOACH_DATA_CLASS_NAME,
)
]
)
async def async_update(self, event_time: datetime) -> None: async def async_update(self, event_time: datetime) -> None:
""" """
Update device. Update device.
@ -172,7 +184,7 @@ class NetatmoDataHandler:
self, self,
data_class_name: str, data_class_name: str,
data_class_entry: str, data_class_entry: str,
update_callback: CALLBACK_TYPE, update_callback: CALLBACK_TYPE | None,
**kwargs: Any, **kwargs: Any,
) -> None: ) -> None:
"""Register data class.""" """Register data class."""

View file

@ -34,10 +34,6 @@ async def async_setup_entry(
) -> None: ) -> None:
"""Set up the Netatmo camera light platform.""" """Set up the Netatmo camera light platform."""
data_handler = hass.data[DOMAIN][entry.entry_id][DATA_HANDLER] data_handler = hass.data[DOMAIN][entry.entry_id][DATA_HANDLER]
await data_handler.register_data_class(
CAMERA_DATA_CLASS_NAME, CAMERA_DATA_CLASS_NAME, None
)
data_class = data_handler.data.get(CAMERA_DATA_CLASS_NAME) data_class = data_handler.data.get(CAMERA_DATA_CLASS_NAME)
if not data_class or data_class.raw_data == {}: if not data_class or data_class.raw_data == {}:

View file

@ -37,9 +37,6 @@ async def async_setup_entry(
"""Set up the Netatmo energy platform schedule selector.""" """Set up the Netatmo energy platform schedule selector."""
data_handler = hass.data[DOMAIN][entry.entry_id][DATA_HANDLER] data_handler = hass.data[DOMAIN][entry.entry_id][DATA_HANDLER]
await data_handler.register_data_class(
CLIMATE_TOPOLOGY_CLASS_NAME, CLIMATE_TOPOLOGY_CLASS_NAME, None
)
climate_topology = data_handler.data.get(CLIMATE_TOPOLOGY_CLASS_NAME) climate_topology = data_handler.data.get(CLIMATE_TOPOLOGY_CLASS_NAME)
if not climate_topology or climate_topology.raw_data == {}: if not climate_topology or climate_topology.raw_data == {}:

View file

@ -386,7 +386,6 @@ async def async_setup_entry(
WEATHERSTATION_DATA_CLASS_NAME, WEATHERSTATION_DATA_CLASS_NAME,
HOMECOACH_DATA_CLASS_NAME, HOMECOACH_DATA_CLASS_NAME,
): ):
await data_handler.register_data_class(data_class_name, data_class_name, None)
data_class = data_handler.data.get(data_class_name) data_class = data_handler.data.get(data_class_name)
if data_class and data_class.raw_data: if data_class and data_class.raw_data:

View file

@ -364,7 +364,7 @@ async def test_camera_reconnect_webhook(hass, config_entry):
await simulate_webhook(hass, webhook_id, response) await simulate_webhook(hass, webhook_id, response)
await hass.async_block_till_done() await hass.async_block_till_done()
assert fake_post_hits == 5 assert fake_post_hits == 8
calls = fake_post_hits calls = fake_post_hits
@ -446,7 +446,7 @@ async def test_setup_component_no_devices(hass, config_entry):
await hass.config_entries.async_setup(config_entry.entry_id) await hass.config_entries.async_setup(config_entry.entry_id)
await hass.async_block_till_done() await hass.async_block_till_done()
assert fake_post_hits == 1 assert fake_post_hits == 4
async def test_camera_image_raises_exception(hass, config_entry, requests_mock): async def test_camera_image_raises_exception(hass, config_entry, requests_mock):
@ -491,4 +491,4 @@ async def test_camera_image_raises_exception(hass, config_entry, requests_mock):
await camera.async_get_image(hass, camera_entity_indoor) await camera.async_get_image(hass, camera_entity_indoor)
assert excinfo.value.args == ("Unable to get image",) assert excinfo.value.args == ("Unable to get image",)
assert fake_post_hits == 6 assert fake_post_hits == 9

View file

@ -112,7 +112,7 @@ async def test_setup_component_with_config(hass, config_entry):
await hass.async_block_till_done() await hass.async_block_till_done()
assert fake_post_hits == 3 assert fake_post_hits == 9
mock_impl.assert_called_once() mock_impl.assert_called_once()
mock_webhook.assert_called_once() mock_webhook.assert_called_once()
@ -354,7 +354,7 @@ async def test_setup_component_with_delay(hass, config_entry):
await hass.async_block_till_done() await hass.async_block_till_done()
assert mock_post_request.call_count == 5 assert mock_post_request.call_count == 8
mock_impl.assert_called_once() mock_impl.assert_called_once()
mock_webhook.assert_not_called() mock_webhook.assert_not_called()

View file

@ -11,6 +11,8 @@ from homeassistant.const import ATTR_ENTITY_ID, CONF_WEBHOOK_ID
from .common import FAKE_WEBHOOK_ACTIVATION, selected_platforms, simulate_webhook from .common import FAKE_WEBHOOK_ACTIVATION, selected_platforms, simulate_webhook
from tests.test_util.aiohttp import AiohttpClientMockResponse
async def test_light_setup_and_services(hass, config_entry, netatmo_auth): async def test_light_setup_and_services(hass, config_entry, netatmo_auth):
"""Test setup and services.""" """Test setup and services."""
@ -89,7 +91,11 @@ async def test_setup_component_no_devices(hass, config_entry):
"""Fake error during requesting backend data.""" """Fake error during requesting backend data."""
nonlocal fake_post_hits nonlocal fake_post_hits
fake_post_hits += 1 fake_post_hits += 1
return "{}" return AiohttpClientMockResponse(
method="POST",
url=kwargs["url"],
json={},
)
with patch( with patch(
"homeassistant.components.netatmo.api.AsyncConfigEntryNetatmoAuth" "homeassistant.components.netatmo.api.AsyncConfigEntryNetatmoAuth"
@ -115,7 +121,7 @@ async def test_setup_component_no_devices(hass, config_entry):
) )
await hass.async_block_till_done() await hass.async_block_till_done()
assert fake_post_hits == 1 assert fake_post_hits == 4
assert hass.config_entries.async_entries(DOMAIN) assert hass.config_entries.async_entries(DOMAIN)
assert len(hass.states.async_all()) == 0 assert len(hass.states.async_all()) == 0