mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 03:07:37 +00:00
Google: catch query not supported (#27559)
This commit is contained in:
parent
6c947f58b8
commit
9e121b785a
@ -1,15 +1,21 @@
|
||||
"""Google Report State implementation."""
|
||||
import logging
|
||||
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.const import MATCH_ALL
|
||||
from homeassistant.helpers.event import async_call_later
|
||||
|
||||
from .helpers import AbstractConfig, GoogleEntity, async_get_entities
|
||||
from .error import SmartHomeError
|
||||
|
||||
# Time to wait until the homegraph updates
|
||||
# https://github.com/actions-on-google/smart-home-nodejs/issues/196#issuecomment-439156639
|
||||
INITIAL_REPORT_DELAY = 60
|
||||
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@callback
|
||||
def async_enable_report_state(hass: HomeAssistant, google_config: AbstractConfig):
|
||||
"""Enable state reporting."""
|
||||
@ -26,7 +32,11 @@ def async_enable_report_state(hass: HomeAssistant, google_config: AbstractConfig
|
||||
if not entity.is_supported():
|
||||
return
|
||||
|
||||
try:
|
||||
entity_data = entity.query_serialize()
|
||||
except SmartHomeError as err:
|
||||
_LOGGER.debug("Not reporting state for %s: %s", changed_entity, err.code)
|
||||
return
|
||||
|
||||
if old_state:
|
||||
old_entity = GoogleEntity(hass, google_config, old_state)
|
||||
|
@ -1,7 +1,7 @@
|
||||
"""Test Google report state."""
|
||||
from unittest.mock import patch
|
||||
|
||||
from homeassistant.components.google_assistant import report_state
|
||||
from homeassistant.components.google_assistant import report_state, error
|
||||
from homeassistant.util.dt import utcnow
|
||||
|
||||
from . import BASIC_CONFIG
|
||||
@ -10,7 +10,7 @@ from . import BASIC_CONFIG
|
||||
from tests.common import mock_coro, async_fire_time_changed
|
||||
|
||||
|
||||
async def test_report_state(hass):
|
||||
async def test_report_state(hass, caplog):
|
||||
"""Test report state works."""
|
||||
hass.states.async_set("light.ceiling", "off")
|
||||
hass.states.async_set("switch.ac", "on")
|
||||
@ -57,6 +57,19 @@ async def test_report_state(hass):
|
||||
|
||||
assert len(mock_report.mock_calls) == 0
|
||||
|
||||
# Test that entities that we can't query don't report a state
|
||||
with patch.object(
|
||||
BASIC_CONFIG, "async_report_state", side_effect=mock_coro
|
||||
) as mock_report, patch(
|
||||
"homeassistant.components.google_assistant.report_state.GoogleEntity.query_serialize",
|
||||
side_effect=error.SmartHomeError("mock-error", "mock-msg"),
|
||||
):
|
||||
hass.states.async_set("light.kitchen", "off")
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert "Not reporting state for light.kitchen: mock-error"
|
||||
assert len(mock_report.mock_calls) == 0
|
||||
|
||||
unsub()
|
||||
|
||||
with patch.object(
|
||||
|
Loading…
x
Reference in New Issue
Block a user