mirror of
https://github.com/home-assistant/core.git
synced 2025-04-23 08:47:57 +00:00
Add test coverage for doorbird cameras (#122660)
This commit is contained in:
parent
d3d522c463
commit
8e578227c3
@ -65,6 +65,7 @@ def get_mock_doorbird_api(
|
||||
type(doorbirdapi_mock).energize_relay = AsyncMock(return_value=True)
|
||||
type(doorbirdapi_mock).turn_light_on = AsyncMock(return_value=True)
|
||||
type(doorbirdapi_mock).delete_favorite = AsyncMock(return_value=True)
|
||||
type(doorbirdapi_mock).get_image = AsyncMock(return_value=b"image")
|
||||
type(doorbirdapi_mock).doorbell_state = AsyncMock(
|
||||
side_effect=mock_unauthorized_exception()
|
||||
)
|
||||
|
46
tests/components/doorbird/test_camera.py
Normal file
46
tests/components/doorbird/test_camera.py
Normal file
@ -0,0 +1,46 @@
|
||||
"""Test DoorBird cameras."""
|
||||
|
||||
from freezegun.api import FrozenDateTimeFactory
|
||||
import pytest
|
||||
|
||||
from homeassistant.components.camera import (
|
||||
STATE_IDLE,
|
||||
async_get_image,
|
||||
async_get_stream_source,
|
||||
)
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.exceptions import HomeAssistantError
|
||||
|
||||
from . import mock_not_found_exception
|
||||
from .conftest import DoorbirdMockerType
|
||||
|
||||
|
||||
async def test_doorbird_cameras(
|
||||
hass: HomeAssistant,
|
||||
doorbird_mocker: DoorbirdMockerType,
|
||||
freezer: FrozenDateTimeFactory,
|
||||
) -> None:
|
||||
"""Test the doorbird cameras."""
|
||||
doorbird_entry = await doorbird_mocker()
|
||||
live_camera_entity_id = "camera.mydoorbird_live"
|
||||
assert hass.states.get(live_camera_entity_id).state == STATE_IDLE
|
||||
last_motion_camera_entity_id = "camera.mydoorbird_last_motion"
|
||||
assert hass.states.get(last_motion_camera_entity_id).state == STATE_IDLE
|
||||
last_ring_camera_entity_id = "camera.mydoorbird_last_ring"
|
||||
assert hass.states.get(last_ring_camera_entity_id).state == STATE_IDLE
|
||||
assert await async_get_stream_source(hass, live_camera_entity_id) is not None
|
||||
api = doorbird_entry.api
|
||||
api.get_image.side_effect = mock_not_found_exception()
|
||||
with pytest.raises(HomeAssistantError):
|
||||
await async_get_image(hass, live_camera_entity_id)
|
||||
api.get_image.side_effect = TimeoutError()
|
||||
with pytest.raises(HomeAssistantError):
|
||||
await async_get_image(hass, live_camera_entity_id)
|
||||
api.get_image.side_effect = None
|
||||
assert (await async_get_image(hass, live_camera_entity_id)).content == b"image"
|
||||
api.get_image.return_value = b"notyet"
|
||||
# Ensure rate limit works
|
||||
assert (await async_get_image(hass, live_camera_entity_id)).content == b"image"
|
||||
|
||||
freezer.tick(60)
|
||||
assert (await async_get_image(hass, live_camera_entity_id)).content == b"notyet"
|
Loading…
x
Reference in New Issue
Block a user