Files
core/tests/components/camera/test_prefs.py
2025-09-01 19:06:01 +01:00

77 lines
2.9 KiB
Python

"""Test camera helper functions."""
import pytest
from homeassistant.components.camera.const import DATA_CAMERA_PREFS
from homeassistant.components.camera.prefs import (
CameraPreferences,
DynamicStreamSettings,
get_dynamic_camera_stream_settings,
)
from homeassistant.components.stream import Orientation
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import HomeAssistantError
async def test_get_dynamic_camera_stream_settings_missing_prefs(
hass: HomeAssistant,
) -> None:
"""Test get_dynamic_camera_stream_settings when camera prefs are not set up."""
with pytest.raises(HomeAssistantError, match="Camera integration not set up"):
await get_dynamic_camera_stream_settings(hass, "camera.test")
async def test_get_dynamic_camera_stream_settings_success(hass: HomeAssistant) -> None:
"""Test successful retrieval of dynamic camera stream settings."""
# Set up camera preferences
prefs = CameraPreferences(hass)
await prefs.async_load()
hass.data[DATA_CAMERA_PREFS] = prefs
# Test with default settings
settings = await get_dynamic_camera_stream_settings(hass, "camera.test")
assert settings.orientation == Orientation.NO_TRANSFORM
assert settings.preload_stream is False
async def test_get_dynamic_camera_stream_settings_with_custom_orientation(
hass: HomeAssistant,
) -> None:
"""Test get_dynamic_camera_stream_settings with custom orientation set."""
# Set up camera preferences
prefs = CameraPreferences(hass)
await prefs.async_load()
hass.data[DATA_CAMERA_PREFS] = prefs
# Set custom orientation - this requires entity registry
# For this test, we'll directly manipulate the internal state
# since entity registry setup is complex for a unit test
test_settings = DynamicStreamSettings(
orientation=Orientation.ROTATE_LEFT, preload_stream=False
)
prefs._dynamic_stream_settings_by_entity_id["camera.test"] = test_settings
settings = await get_dynamic_camera_stream_settings(hass, "camera.test")
assert settings.orientation == Orientation.ROTATE_LEFT
assert settings.preload_stream is False
async def test_get_dynamic_camera_stream_settings_with_preload_stream(
hass: HomeAssistant,
) -> None:
"""Test get_dynamic_camera_stream_settings with preload stream enabled."""
# Set up camera preferences
prefs = CameraPreferences(hass)
await prefs.async_load()
hass.data[DATA_CAMERA_PREFS] = prefs
# Set preload stream by directly setting the dynamic stream settings
test_settings = DynamicStreamSettings(
orientation=Orientation.NO_TRANSFORM, preload_stream=True
)
prefs._dynamic_stream_settings_by_entity_id["camera.test"] = test_settings
settings = await get_dynamic_camera_stream_settings(hass, "camera.test")
assert settings.orientation == Orientation.NO_TRANSFORM
assert settings.preload_stream is True