core/tests/components/doorbird/test_device.py

60 lines
2.1 KiB
Python

"""Test DoorBird device."""
from copy import deepcopy
from http import HTTPStatus
from doorbirdpy import DoorBirdScheduleEntry
import pytest
from homeassistant.components.doorbird.const import CONF_EVENTS
from homeassistant.core import HomeAssistant
from .conftest import DoorbirdMockerType
async def test_no_configured_events(
hass: HomeAssistant,
doorbird_mocker: DoorbirdMockerType,
) -> None:
"""Test a doorbird with no events configured."""
await doorbird_mocker(options={CONF_EVENTS: []})
assert not hass.states.async_all("event")
async def test_change_schedule_success(
doorbird_mocker: DoorbirdMockerType,
doorbird_schedule_wrong_param: list[DoorBirdScheduleEntry],
caplog: pytest.LogCaptureFixture,
) -> None:
"""Test a doorbird when change_schedule fails."""
schedule_copy = deepcopy(doorbird_schedule_wrong_param)
mock_doorbird = await doorbird_mocker(schedule=schedule_copy)
assert "Unable to update schedule entry mydoorbird" not in caplog.text
assert mock_doorbird.api.change_schedule.call_count == 1
new_schedule: list[DoorBirdScheduleEntry] = (
mock_doorbird.api.change_schedule.call_args[0]
)
# Ensure the attempt to update the schedule to fix the incorrect
# param is made
assert new_schedule[-1].output[-1].param == "1"
async def test_change_schedule_fails(
doorbird_mocker: DoorbirdMockerType,
doorbird_schedule_wrong_param: list[DoorBirdScheduleEntry],
caplog: pytest.LogCaptureFixture,
) -> None:
"""Test a doorbird when change_schedule fails."""
schedule_copy = deepcopy(doorbird_schedule_wrong_param)
mock_doorbird = await doorbird_mocker(
schedule=schedule_copy, change_schedule=(False, HTTPStatus.UNAUTHORIZED)
)
assert "Unable to update schedule entry mydoorbird" in caplog.text
assert mock_doorbird.api.change_schedule.call_count == 1
new_schedule: list[DoorBirdScheduleEntry] = (
mock_doorbird.api.change_schedule.call_args[0]
)
# Ensure the attempt to update the schedule to fix the incorrect
# param is made
assert new_schedule[-1].output[-1].param == "1"