mirror of
https://github.com/home-assistant/core.git
synced 2025-11-13 13:00:11 +00:00
77 lines
2.9 KiB
Python
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
|