mirror of https://github.com/home-assistant/core
60 lines
2.1 KiB
Python
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"
|