core/tests/components/hydrawise/test_valve.py

60 lines
1.7 KiB
Python

"""Test Hydrawise valve."""
from collections.abc import Awaitable, Callable
from unittest.mock import AsyncMock, patch
from pydrawise.schema import Zone
from syrupy.assertion import SnapshotAssertion
from homeassistant.components.valve import DOMAIN as VALVE_DOMAIN
from homeassistant.const import (
ATTR_ENTITY_ID,
SERVICE_CLOSE_VALVE,
SERVICE_OPEN_VALVE,
Platform,
)
from homeassistant.core import HomeAssistant
from homeassistant.helpers import entity_registry as er
from tests.common import MockConfigEntry, snapshot_platform
async def test_all_valves(
hass: HomeAssistant,
mock_add_config_entry: Callable[[], Awaitable[MockConfigEntry]],
entity_registry: er.EntityRegistry,
snapshot: SnapshotAssertion,
) -> None:
"""Test that all valves are working."""
with patch(
"homeassistant.components.hydrawise.PLATFORMS",
[Platform.VALVE],
):
config_entry = await mock_add_config_entry()
await snapshot_platform(hass, entity_registry, snapshot, config_entry.entry_id)
async def test_services(
hass: HomeAssistant,
mock_added_config_entry: MockConfigEntry,
mock_pydrawise: AsyncMock,
zones: list[Zone],
) -> None:
"""Test valve services."""
await hass.services.async_call(
VALVE_DOMAIN,
SERVICE_OPEN_VALVE,
service_data={ATTR_ENTITY_ID: "valve.zone_one"},
blocking=True,
)
mock_pydrawise.start_zone.assert_called_once_with(zones[0])
mock_pydrawise.reset_mock()
await hass.services.async_call(
VALVE_DOMAIN,
SERVICE_CLOSE_VALVE,
service_data={ATTR_ENTITY_ID: "valve.zone_one"},
blocking=True,
)
mock_pydrawise.stop_zone.assert_called_once_with(zones[0])