mirror of
https://github.com/esphome/aioesphomeapi.git
synced 2025-01-28 22:41:25 +01:00
Add button tests (#654)
This commit is contained in:
parent
2501ea4275
commit
54452b4b94
@ -1,6 +1,7 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import asyncio
|
import asyncio
|
||||||
|
from typing import Any
|
||||||
from unittest.mock import AsyncMock, MagicMock, patch
|
from unittest.mock import AsyncMock, MagicMock, patch
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
@ -14,6 +15,7 @@ from aioesphomeapi.api_pb2 import (
|
|||||||
BluetoothDeviceConnectionResponse,
|
BluetoothDeviceConnectionResponse,
|
||||||
BluetoothDevicePairingResponse,
|
BluetoothDevicePairingResponse,
|
||||||
BluetoothDeviceUnpairingResponse,
|
BluetoothDeviceUnpairingResponse,
|
||||||
|
ButtonCommandRequest,
|
||||||
CameraImageRequest,
|
CameraImageRequest,
|
||||||
CameraImageResponse,
|
CameraImageResponse,
|
||||||
ClimateCommandRequest,
|
ClimateCommandRequest,
|
||||||
@ -126,14 +128,16 @@ def patch_api_version(client: APIClient, version: APIVersion):
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
async def test_list_entities(auth_client, input, output):
|
async def test_list_entities(
|
||||||
|
auth_client: APIClient, input: dict[str, Any], output: dict[str, Any]
|
||||||
|
) -> None:
|
||||||
patch_response_complex(auth_client, input)
|
patch_response_complex(auth_client, input)
|
||||||
resp = await auth_client.list_entities_services()
|
resp = await auth_client.list_entities_services()
|
||||||
assert resp == output
|
assert resp == output
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
async def test_subscribe_states(auth_client):
|
async def test_subscribe_states(auth_client: APIClient) -> None:
|
||||||
send = patch_response_callback(auth_client)
|
send = patch_response_callback(auth_client)
|
||||||
on_state = MagicMock()
|
on_state = MagicMock()
|
||||||
await auth_client.subscribe_states(on_state)
|
await auth_client.subscribe_states(on_state)
|
||||||
@ -144,7 +148,7 @@ async def test_subscribe_states(auth_client):
|
|||||||
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
async def test_subscribe_states_camera(auth_client):
|
async def test_subscribe_states_camera(auth_client: APIClient) -> None:
|
||||||
send = patch_response_callback(auth_client)
|
send = patch_response_callback(auth_client)
|
||||||
on_state = MagicMock()
|
on_state = MagicMock()
|
||||||
await auth_client.subscribe_states(on_state)
|
await auth_client.subscribe_states(on_state)
|
||||||
@ -180,7 +184,9 @@ async def test_subscribe_states_camera(auth_client):
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
async def test_cover_command_legacy(auth_client, cmd, req):
|
async def test_cover_command_legacy(
|
||||||
|
auth_client: APIClient, cmd: dict[str, Any], req: dict[str, Any]
|
||||||
|
) -> None:
|
||||||
send = patch_send(auth_client)
|
send = patch_send(auth_client)
|
||||||
patch_api_version(auth_client, APIVersion(1, 0))
|
patch_api_version(auth_client, APIVersion(1, 0))
|
||||||
|
|
||||||
@ -202,7 +208,9 @@ async def test_cover_command_legacy(auth_client, cmd, req):
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
async def test_cover_command(auth_client, cmd, req):
|
async def test_cover_command(
|
||||||
|
auth_client: APIClient, cmd: dict[str, Any], req: dict[str, Any]
|
||||||
|
) -> None:
|
||||||
send = patch_send(auth_client)
|
send = patch_send(auth_client)
|
||||||
patch_api_version(auth_client, APIVersion(1, 1))
|
patch_api_version(auth_client, APIVersion(1, 1))
|
||||||
|
|
||||||
@ -234,7 +242,9 @@ async def test_cover_command(auth_client, cmd, req):
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
async def test_fan_command(auth_client, cmd, req):
|
async def test_fan_command(
|
||||||
|
auth_client: APIClient, cmd: dict[str, Any], req: dict[str, Any]
|
||||||
|
) -> None:
|
||||||
send = patch_send(auth_client)
|
send = patch_send(auth_client)
|
||||||
|
|
||||||
await auth_client.fan_command(**cmd)
|
await auth_client.fan_command(**cmd)
|
||||||
@ -268,7 +278,9 @@ async def test_fan_command(auth_client, cmd, req):
|
|||||||
(dict(key=1, effect="special"), dict(key=1, has_effect=True, effect="special")),
|
(dict(key=1, effect="special"), dict(key=1, has_effect=True, effect="special")),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
async def test_light_command(auth_client, cmd, req):
|
async def test_light_command(
|
||||||
|
auth_client: APIClient, cmd: dict[str, Any], req: dict[str, Any]
|
||||||
|
) -> None:
|
||||||
send = patch_send(auth_client)
|
send = patch_send(auth_client)
|
||||||
|
|
||||||
await auth_client.light_command(**cmd)
|
await auth_client.light_command(**cmd)
|
||||||
@ -283,7 +295,9 @@ async def test_light_command(auth_client, cmd, req):
|
|||||||
(dict(key=1, state=True), dict(key=1, state=True)),
|
(dict(key=1, state=True), dict(key=1, state=True)),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
async def test_switch_command(auth_client, cmd, req):
|
async def test_switch_command(
|
||||||
|
auth_client: APIClient, cmd: dict[str, Any], req: dict[str, Any]
|
||||||
|
) -> None:
|
||||||
send = patch_send(auth_client)
|
send = patch_send(auth_client)
|
||||||
|
|
||||||
await auth_client.switch_command(**cmd)
|
await auth_client.switch_command(**cmd)
|
||||||
@ -304,7 +318,9 @@ async def test_switch_command(auth_client, cmd, req):
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
async def test_climate_command_legacy(auth_client, cmd, req):
|
async def test_climate_command_legacy(
|
||||||
|
auth_client: APIClient, cmd: dict[str, Any], req: dict[str, Any]
|
||||||
|
) -> None:
|
||||||
send = patch_send(auth_client)
|
send = patch_send(auth_client)
|
||||||
patch_api_version(auth_client, APIVersion(1, 4))
|
patch_api_version(auth_client, APIVersion(1, 4))
|
||||||
|
|
||||||
@ -354,7 +370,9 @@ async def test_climate_command_legacy(auth_client, cmd, req):
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
async def test_climate_command(auth_client, cmd, req):
|
async def test_climate_command(
|
||||||
|
auth_client: APIClient, cmd: dict[str, Any], req: dict[str, Any]
|
||||||
|
) -> None:
|
||||||
send = patch_send(auth_client)
|
send = patch_send(auth_client)
|
||||||
patch_api_version(auth_client, APIVersion(1, 5))
|
patch_api_version(auth_client, APIVersion(1, 5))
|
||||||
|
|
||||||
@ -370,7 +388,9 @@ async def test_climate_command(auth_client, cmd, req):
|
|||||||
(dict(key=1, state=100.0), dict(key=1, state=100.0)),
|
(dict(key=1, state=100.0), dict(key=1, state=100.0)),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
async def test_number_command(auth_client, cmd, req):
|
async def test_number_command(
|
||||||
|
auth_client: APIClient, cmd: dict[str, Any], req: dict[str, Any]
|
||||||
|
) -> None:
|
||||||
send = patch_send(auth_client)
|
send = patch_send(auth_client)
|
||||||
|
|
||||||
await auth_client.number_command(**cmd)
|
await auth_client.number_command(**cmd)
|
||||||
@ -389,7 +409,9 @@ async def test_number_command(auth_client, cmd, req):
|
|||||||
(dict(key=1, command=LockCommand.OPEN), dict(key=1, command=LockCommand.OPEN)),
|
(dict(key=1, command=LockCommand.OPEN), dict(key=1, command=LockCommand.OPEN)),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
async def test_lock_command(auth_client, cmd, req):
|
async def test_lock_command(
|
||||||
|
auth_client: APIClient, cmd: dict[str, Any], req: dict[str, Any]
|
||||||
|
) -> None:
|
||||||
send = patch_send(auth_client)
|
send = patch_send(auth_client)
|
||||||
|
|
||||||
await auth_client.lock_command(**cmd)
|
await auth_client.lock_command(**cmd)
|
||||||
@ -404,7 +426,9 @@ async def test_lock_command(auth_client, cmd, req):
|
|||||||
(dict(key=1, state="Two"), dict(key=1, state="Two")),
|
(dict(key=1, state="Two"), dict(key=1, state="Two")),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
async def test_select_command(auth_client, cmd, req):
|
async def test_select_command(
|
||||||
|
auth_client: APIClient, cmd: dict[str, Any], req: dict[str, Any]
|
||||||
|
) -> None:
|
||||||
send = patch_send(auth_client)
|
send = patch_send(auth_client)
|
||||||
|
|
||||||
await auth_client.select_command(**cmd)
|
await auth_client.select_command(**cmd)
|
||||||
@ -429,7 +453,9 @@ async def test_select_command(auth_client, cmd, req):
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
async def test_media_player_command(auth_client, cmd, req):
|
async def test_media_player_command(
|
||||||
|
auth_client: APIClient, cmd: dict[str, Any], req: dict[str, Any]
|
||||||
|
) -> None:
|
||||||
send = patch_send(auth_client)
|
send = patch_send(auth_client)
|
||||||
|
|
||||||
await auth_client.media_player_command(**cmd)
|
await auth_client.media_player_command(**cmd)
|
||||||
@ -437,7 +463,23 @@ async def test_media_player_command(auth_client, cmd, req):
|
|||||||
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
async def test_execute_service(auth_client):
|
@pytest.mark.parametrize(
|
||||||
|
"cmd, req",
|
||||||
|
[
|
||||||
|
(dict(key=1), dict(key=1)),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
async def test_button_command(
|
||||||
|
auth_client: APIClient, cmd: dict[str, Any], req: dict[str, Any]
|
||||||
|
) -> None:
|
||||||
|
send = patch_send(auth_client)
|
||||||
|
|
||||||
|
await auth_client.button_command(**cmd)
|
||||||
|
send.assert_called_once_with(ButtonCommandRequest(**req))
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.asyncio
|
||||||
|
async def test_execute_service(auth_client: APIClient) -> None:
|
||||||
send = patch_send(auth_client)
|
send = patch_send(auth_client)
|
||||||
patch_api_version(auth_client, APIVersion(1, 3))
|
patch_api_version(auth_client, APIVersion(1, 3))
|
||||||
|
|
||||||
@ -539,7 +581,7 @@ async def test_execute_service(auth_client):
|
|||||||
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
async def test_request_single_image(auth_client):
|
async def test_request_single_image(auth_client: APIClient) -> None:
|
||||||
send = patch_send(auth_client)
|
send = patch_send(auth_client)
|
||||||
|
|
||||||
await auth_client.request_single_image()
|
await auth_client.request_single_image()
|
||||||
@ -547,7 +589,7 @@ async def test_request_single_image(auth_client):
|
|||||||
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
async def test_request_image_stream(auth_client):
|
async def test_request_image_stream(auth_client: APIClient) -> None:
|
||||||
send = patch_send(auth_client)
|
send = patch_send(auth_client)
|
||||||
|
|
||||||
await auth_client.request_image_stream()
|
await auth_client.request_image_stream()
|
||||||
@ -572,7 +614,9 @@ async def test_request_image_stream(auth_client):
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
async def test_alarm_panel_command(auth_client, cmd, req):
|
async def test_alarm_panel_command(
|
||||||
|
auth_client: APIClient, cmd: dict[str, Any], req: dict[str, Any]
|
||||||
|
) -> None:
|
||||||
send = patch_send(auth_client)
|
send = patch_send(auth_client)
|
||||||
|
|
||||||
await auth_client.alarm_control_panel_command(**cmd)
|
await auth_client.alarm_control_panel_command(**cmd)
|
||||||
@ -587,7 +631,9 @@ async def test_alarm_panel_command(auth_client, cmd, req):
|
|||||||
(dict(key=1, state="goodbye"), dict(key=1, state="goodbye")),
|
(dict(key=1, state="goodbye"), dict(key=1, state="goodbye")),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
async def test_text_command(auth_client, cmd, req):
|
async def test_text_command(
|
||||||
|
auth_client: APIClient, cmd: dict[str, Any], req: dict[str, Any]
|
||||||
|
) -> None:
|
||||||
send = patch_send(auth_client)
|
send = patch_send(auth_client)
|
||||||
|
|
||||||
await auth_client.text_command(**cmd)
|
await auth_client.text_command(**cmd)
|
||||||
|
Loading…
Reference in New Issue
Block a user