mirror of https://github.com/home-assistant/core
94 lines
2.5 KiB
Python
94 lines
2.5 KiB
Python
"""Test Hydrawise services."""
|
|
|
|
from datetime import datetime
|
|
from unittest.mock import AsyncMock
|
|
|
|
from pydrawise.schema import Zone
|
|
|
|
from homeassistant.components.hydrawise.const import (
|
|
ATTR_DURATION,
|
|
ATTR_UNTIL,
|
|
DOMAIN,
|
|
SERVICE_RESUME,
|
|
SERVICE_START_WATERING,
|
|
SERVICE_SUSPEND,
|
|
)
|
|
from homeassistant.const import ATTR_ENTITY_ID
|
|
from homeassistant.core import HomeAssistant
|
|
|
|
from tests.common import MockConfigEntry
|
|
|
|
|
|
async def test_start_watering(
|
|
hass: HomeAssistant,
|
|
mock_added_config_entry: MockConfigEntry,
|
|
mock_pydrawise: AsyncMock,
|
|
zones: list[Zone],
|
|
) -> None:
|
|
"""Test that the start_watering service works as intended."""
|
|
await hass.services.async_call(
|
|
DOMAIN,
|
|
SERVICE_START_WATERING,
|
|
{
|
|
ATTR_ENTITY_ID: "binary_sensor.zone_one_watering",
|
|
ATTR_DURATION: 20,
|
|
},
|
|
blocking=True,
|
|
)
|
|
mock_pydrawise.start_zone.assert_called_once_with(
|
|
zones[0], custom_run_duration=20 * 60
|
|
)
|
|
|
|
|
|
async def test_start_watering_no_duration(
|
|
hass: HomeAssistant,
|
|
mock_added_config_entry: MockConfigEntry,
|
|
mock_pydrawise: AsyncMock,
|
|
zones: list[Zone],
|
|
) -> None:
|
|
"""Test that the start_watering service works with no duration specified."""
|
|
await hass.services.async_call(
|
|
DOMAIN,
|
|
SERVICE_START_WATERING,
|
|
{ATTR_ENTITY_ID: "binary_sensor.zone_one_watering"},
|
|
blocking=True,
|
|
)
|
|
mock_pydrawise.start_zone.assert_called_once_with(zones[0], custom_run_duration=0)
|
|
|
|
|
|
async def test_resume(
|
|
hass: HomeAssistant,
|
|
mock_added_config_entry: MockConfigEntry,
|
|
mock_pydrawise: AsyncMock,
|
|
zones: list[Zone],
|
|
) -> None:
|
|
"""Test that the resume service works as intended."""
|
|
await hass.services.async_call(
|
|
DOMAIN,
|
|
SERVICE_RESUME,
|
|
{ATTR_ENTITY_ID: "binary_sensor.zone_one_watering"},
|
|
blocking=True,
|
|
)
|
|
mock_pydrawise.resume_zone.assert_called_once_with(zones[0])
|
|
|
|
|
|
async def test_suspend(
|
|
hass: HomeAssistant,
|
|
mock_added_config_entry: MockConfigEntry,
|
|
mock_pydrawise: AsyncMock,
|
|
zones: list[Zone],
|
|
) -> None:
|
|
"""Test that the suspend service works as intended."""
|
|
await hass.services.async_call(
|
|
DOMAIN,
|
|
SERVICE_SUSPEND,
|
|
{
|
|
ATTR_ENTITY_ID: "binary_sensor.zone_one_watering",
|
|
ATTR_UNTIL: datetime(2026, 1, 1, 0, 0, 0),
|
|
},
|
|
blocking=True,
|
|
)
|
|
mock_pydrawise.suspend_zone.assert_called_once_with(
|
|
zones[0], until=datetime(2026, 1, 1, 0, 0, 0)
|
|
)
|