-
Notifications
You must be signed in to change notification settings - Fork 12
/
test_services.py
65 lines (52 loc) · 1.81 KB
/
test_services.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
"""Test porscheconnect number."""
from unittest.mock import MagicMock
import pytest
from custom_components.porscheconnect.const import DOMAIN as PORSCHE_DOMAIN
from homeassistant.core import HomeAssistant
from homeassistant.helpers import device_registry as dr
from . import setup_mock_porscheconnect_config_entry
SERVICE_HONK_AND_FLASH = "honk_and_flash"
SERVICE_FLASH = "flash"
ATTR_VEHICLE = "vehicle"
def get_device_id(hass: HomeAssistant) -> str:
"""Get device_id."""
device_registry = dr.async_get(hass)
identifiers = {(PORSCHE_DOMAIN, "WPTAYCAN")}
device = device_registry.async_get_device(identifiers)
return device.id
@pytest.mark.asyncio
async def test_honk_and_flash(
hass: HomeAssistant, mock_honk_and_flash: MagicMock
) -> None:
"""Verify device information includes expected details."""
await setup_mock_porscheconnect_config_entry(hass)
data = {
ATTR_VEHICLE: get_device_id(hass),
}
await hass.services.async_call(
PORSCHE_DOMAIN,
SERVICE_HONK_AND_FLASH,
data,
blocking=False,
)
assert mock_honk_and_flash.call_count == 0
await hass.async_block_till_done()
assert mock_honk_and_flash.call_count == 1
mock_honk_and_flash.assert_called_with("WPTAYCAN", True)
@pytest.mark.asyncio
async def test_flash(hass: HomeAssistant, mock_flash: MagicMock) -> None:
"""Verify device information includes expected details."""
await setup_mock_porscheconnect_config_entry(hass)
data = {
ATTR_VEHICLE: get_device_id(hass),
}
await hass.services.async_call(
PORSCHE_DOMAIN,
SERVICE_FLASH,
data,
blocking=False,
)
assert mock_flash.call_count == 0
await hass.async_block_till_done()
assert mock_flash.call_count == 1
mock_flash.assert_called_with("WPTAYCAN", True)