mirror of
https://github.com/home-assistant/core.git
synced 2025-07-17 10:17:09 +00:00
Add coverage for doorbird button platform (#122145)
This commit is contained in:
parent
a2c2488c8b
commit
dae23a8153
@ -31,9 +31,14 @@ def get_mock_doorbird_api(
|
|||||||
type(doorbirdapi_mock).info = AsyncMock(
|
type(doorbirdapi_mock).info = AsyncMock(
|
||||||
side_effect=info_side_effect, return_value=info
|
side_effect=info_side_effect, return_value=info
|
||||||
)
|
)
|
||||||
type(doorbirdapi_mock).favorites = AsyncMock(return_value={})
|
type(doorbirdapi_mock).favorites = AsyncMock(
|
||||||
|
return_value={"http": {"x": {"value": "http://webhook"}}}
|
||||||
|
)
|
||||||
type(doorbirdapi_mock).change_favorite = AsyncMock(return_value=True)
|
type(doorbirdapi_mock).change_favorite = AsyncMock(return_value=True)
|
||||||
type(doorbirdapi_mock).schedule = AsyncMock(return_value=schedule)
|
type(doorbirdapi_mock).schedule = AsyncMock(return_value=schedule)
|
||||||
|
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).doorbell_state = AsyncMock(
|
type(doorbirdapi_mock).doorbell_state = AsyncMock(
|
||||||
side_effect=mock_unauthorized_exception()
|
side_effect=mock_unauthorized_exception()
|
||||||
)
|
)
|
||||||
|
55
tests/components/doorbird/test_button.py
Normal file
55
tests/components/doorbird/test_button.py
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
"""Test DoorBird buttons."""
|
||||||
|
|
||||||
|
from collections.abc import Callable, Coroutine
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
|
from homeassistant.components.button import DOMAIN, SERVICE_PRESS
|
||||||
|
from homeassistant.const import ATTR_ENTITY_ID, STATE_UNKNOWN
|
||||||
|
from homeassistant.core import HomeAssistant
|
||||||
|
|
||||||
|
from .conftest import MockDoorbirdEntry
|
||||||
|
|
||||||
|
|
||||||
|
async def test_relay_button(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
doorbird_mocker: Callable[[], Coroutine[Any, Any, MockDoorbirdEntry]],
|
||||||
|
) -> None:
|
||||||
|
"""Test pressing a relay button."""
|
||||||
|
doorbird_entry = await doorbird_mocker()
|
||||||
|
relay_1_entity_id = "button.mydoorbird_relay_1"
|
||||||
|
assert hass.states.get(relay_1_entity_id).state == STATE_UNKNOWN
|
||||||
|
await hass.services.async_call(
|
||||||
|
DOMAIN, SERVICE_PRESS, {ATTR_ENTITY_ID: relay_1_entity_id}, blocking=True
|
||||||
|
)
|
||||||
|
assert hass.states.get(relay_1_entity_id).state != STATE_UNKNOWN
|
||||||
|
assert doorbird_entry.api.energize_relay.call_count == 1
|
||||||
|
|
||||||
|
|
||||||
|
async def test_ir_button(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
doorbird_mocker: Callable[[], Coroutine[Any, Any, MockDoorbirdEntry]],
|
||||||
|
) -> None:
|
||||||
|
"""Test pressing the IR button."""
|
||||||
|
doorbird_entry = await doorbird_mocker()
|
||||||
|
ir_entity_id = "button.mydoorbird_ir"
|
||||||
|
assert hass.states.get(ir_entity_id).state == STATE_UNKNOWN
|
||||||
|
await hass.services.async_call(
|
||||||
|
DOMAIN, SERVICE_PRESS, {ATTR_ENTITY_ID: ir_entity_id}, blocking=True
|
||||||
|
)
|
||||||
|
assert hass.states.get(ir_entity_id).state != STATE_UNKNOWN
|
||||||
|
assert doorbird_entry.api.turn_light_on.call_count == 1
|
||||||
|
|
||||||
|
|
||||||
|
async def test_reset_favorites_button(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
doorbird_mocker: Callable[[], Coroutine[Any, Any, MockDoorbirdEntry]],
|
||||||
|
) -> None:
|
||||||
|
"""Test pressing the reset favorites button."""
|
||||||
|
doorbird_entry = await doorbird_mocker()
|
||||||
|
reset_entity_id = "button.mydoorbird_reset_favorites"
|
||||||
|
assert hass.states.get(reset_entity_id).state == STATE_UNKNOWN
|
||||||
|
await hass.services.async_call(
|
||||||
|
DOMAIN, SERVICE_PRESS, {ATTR_ENTITY_ID: reset_entity_id}, blocking=True
|
||||||
|
)
|
||||||
|
assert hass.states.get(reset_entity_id).state != STATE_UNKNOWN
|
||||||
|
assert doorbird_entry.api.delete_favorite.call_count == 1
|
Loading…
x
Reference in New Issue
Block a user