From 5aabb2a920ab3810e6fcdec4de4e8698b22a960f Mon Sep 17 00:00:00 2001 From: Joost Lekkerkerker Date: Wed, 27 Mar 2024 16:36:42 +0100 Subject: [PATCH] Finish ROVA init tests (#114315) * Finish ROVA init tests * Finish ROVA init tests * Finish ROVA init tests --- .../components/rova/snapshots/test_init.ambr | 31 +++++++++ tests/components/rova/test_init.py | 64 ++++++++++++++++++- 2 files changed, 94 insertions(+), 1 deletion(-) create mode 100644 tests/components/rova/snapshots/test_init.ambr diff --git a/tests/components/rova/snapshots/test_init.ambr b/tests/components/rova/snapshots/test_init.ambr new file mode 100644 index 00000000000..340b0e6d472 --- /dev/null +++ b/tests/components/rova/snapshots/test_init.ambr @@ -0,0 +1,31 @@ +# serializer version: 1 +# name: test_service + DeviceRegistryEntrySnapshot({ + 'area_id': None, + 'config_entries': , + 'configuration_url': None, + 'connections': set({ + }), + 'disabled_by': None, + 'entry_type': , + 'hw_version': None, + 'id': , + 'identifiers': set({ + tuple( + 'rova', + '8381BE13', + ), + }), + 'is_new': False, + 'labels': set({ + }), + 'manufacturer': None, + 'model': None, + 'name': '8381BE 13', + 'name_by_user': None, + 'serial_number': None, + 'suggested_area': None, + 'sw_version': None, + 'via_device_id': None, + }) +# --- diff --git a/tests/components/rova/test_init.py b/tests/components/rova/test_init.py index 33149559f68..3dff0cf4c27 100644 --- a/tests/components/rova/test_init.py +++ b/tests/components/rova/test_init.py @@ -2,11 +2,73 @@ from unittest.mock import MagicMock +import pytest +from requests import ConnectTimeout +from syrupy import SnapshotAssertion + +from homeassistant.components.rova import DOMAIN from homeassistant.config_entries import ConfigEntryState +from homeassistant.const import Platform from homeassistant.core import HomeAssistant -from homeassistant.helpers import issue_registry as ir +from homeassistant.helpers import device_registry as dr, issue_registry as ir from tests.common import MockConfigEntry +from tests.components.rova import setup_with_selected_platforms + + +async def test_reload( + hass: HomeAssistant, + mock_rova: MagicMock, + mock_config_entry: MockConfigEntry, +) -> None: + """Test reloading the integration.""" + await setup_with_selected_platforms(hass, mock_config_entry, [Platform.SENSOR]) + + assert mock_config_entry.state == ConfigEntryState.LOADED + + assert await hass.config_entries.async_unload(mock_config_entry.entry_id) + await hass.async_block_till_done() + + assert mock_config_entry.state == ConfigEntryState.NOT_LOADED + + +async def test_service( + hass: HomeAssistant, + mock_rova: MagicMock, + mock_config_entry: MockConfigEntry, + device_registry: dr.DeviceRegistry, + snapshot: SnapshotAssertion, +) -> None: + """Test the Rova service.""" + await setup_with_selected_platforms(hass, mock_config_entry, [Platform.SENSOR]) + + device_entry = device_registry.async_get_device( + identifiers={(DOMAIN, mock_config_entry.unique_id)} + ) + assert device_entry is not None + assert device_entry == snapshot + + +@pytest.mark.parametrize( + "method", + [ + "is_rova_area", + "get_calendar_items", + ], +) +async def test_retry_after_failure( + hass: HomeAssistant, + mock_rova: MagicMock, + mock_config_entry: MockConfigEntry, + method: str, +) -> None: + """Test we retry after a failure.""" + getattr(mock_rova, method).side_effect = ConnectTimeout + mock_config_entry.add_to_hass(hass) + assert not await hass.config_entries.async_setup(mock_config_entry.entry_id) + await hass.async_block_till_done() + + assert mock_config_entry.state == ConfigEntryState.SETUP_RETRY async def test_issue_if_not_rova_area(