core/tests/components/google_assistant/test_logbook.py

72 lines
2.2 KiB
Python

"""The tests for Google Assistant logbook."""
from homeassistant.components.google_assistant.const import (
DOMAIN,
EVENT_COMMAND_RECEIVED,
SOURCE_CLOUD,
SOURCE_LOCAL,
)
from homeassistant.const import ATTR_ENTITY_ID, ATTR_FRIENDLY_NAME
from homeassistant.core import HomeAssistant
from homeassistant.setup import async_setup_component
from tests.components.logbook.common import MockRow, mock_humanify
async def test_humanify_command_received(hass: HomeAssistant) -> None:
"""Test humanifying command event."""
hass.config.components.add("recorder")
hass.config.components.add("frontend")
hass.config.components.add("google_assistant")
assert await async_setup_component(hass, "logbook", {})
await hass.async_block_till_done()
hass.states.async_set(
"light.kitchen", "on", {ATTR_FRIENDLY_NAME: "The Kitchen Lights"}
)
events = mock_humanify(
hass,
[
MockRow(
EVENT_COMMAND_RECEIVED,
{
"request_id": "abcd",
ATTR_ENTITY_ID: ["light.kitchen"],
"execution": [
{
"command": "action.devices.commands.OnOff",
"params": {"on": True},
}
],
"source": SOURCE_LOCAL,
},
),
MockRow(
EVENT_COMMAND_RECEIVED,
{
"request_id": "abcd",
ATTR_ENTITY_ID: ["light.non_existing"],
"execution": [
{
"command": "action.devices.commands.OnOff",
"params": {"on": False},
}
],
"source": SOURCE_CLOUD,
},
),
],
)
assert len(events) == 2
event1, event2 = events
assert event1["name"] == "Google Assistant"
assert event1["domain"] == DOMAIN
assert event1["message"] == "sent command OnOff (via local)"
assert event2["name"] == "Google Assistant"
assert event2["domain"] == DOMAIN
assert event2["message"] == "sent command OnOff"