From 98b4950554c22f0a64fbb45aa7bbeaa51d5568b7 Mon Sep 17 00:00:00 2001 From: Nick Mowen Date: Fri, 11 Aug 2023 06:47:14 -0600 Subject: [PATCH] Add test for unavailable --- custom_components/frigate/camera.py | 1 - tests/test_camera.py | 27 ++++++++++++++++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/custom_components/frigate/camera.py b/custom_components/frigate/camera.py index 4296e2c8..8cbaef2d 100644 --- a/custom_components/frigate/camera.py +++ b/custom_components/frigate/camera.py @@ -237,7 +237,6 @@ def available(self) -> bool: if data: return True - return False @property diff --git a/tests/test_camera.py b/tests/test_camera.py index e7a8f0fe..ffc2de92 100644 --- a/tests/test_camera.py +++ b/tests/test_camera.py @@ -7,8 +7,12 @@ from unittest.mock import AsyncMock import pytest -from pytest_homeassistant_custom_component.common import async_fire_mqtt_message +from pytest_homeassistant_custom_component.common import ( + async_fire_mqtt_message, + async_fire_time_changed, +) +from custom_components.frigate import SCAN_INTERVAL from custom_components.frigate.const import ( ATTR_EVENT_ID, ATTR_FAVORITE, @@ -31,6 +35,7 @@ from homeassistant.const import ATTR_ENTITY_ID from homeassistant.core import HomeAssistant from homeassistant.helpers import device_registry as dr, entity_registry as er +import homeassistant.util.dt as dt_util from . import ( TEST_CAMERA_BIRDSEYE_ENTITY_ID, @@ -39,6 +44,7 @@ TEST_CONFIG, TEST_CONFIG_ENTRY_ID, TEST_SERVER_VERSION, + TEST_STATS, create_mock_frigate_client, create_mock_frigate_config_entry, setup_mock_frigate_config_entry, @@ -345,6 +351,25 @@ async def test_camera_disable_motion_detection( ) +async def test_camera_unavailable(hass: HomeAssistant) -> None: + """Test that camera is marked as unavailable.""" + await setup_mock_frigate_config_entry(hass) + entity_state = hass.states.get(TEST_CAMERA_FRONT_DOOR_ENTITY_ID) + assert entity_state + + client = create_mock_frigate_client() + stats = copy.deepcopy(TEST_STATS) + stats["front_door"]["camera_fps"] = 0.0 + client.async_get_stats = AsyncMock(return_value=stats) + + async_fire_time_changed(hass, dt_util.utcnow() + SCAN_INTERVAL) + await hass.async_block_till_done() + + entity_state = hass.states.get(TEST_CAMERA_FRONT_DOOR_ENTITY_ID) + assert entity_state + assert entity_state.state == "unavailable" + + @pytest.mark.parametrize( "entityid_to_uniqueid", [