Add scan interval to Command Line (#93752)
* Add scan interval * Handle previous not complete * Fix faulty text * Add tests * lingering * Cool down * Fix tests
This commit is contained in:
parent
aa636a2805
commit
038b0e6d23
10 changed files with 463 additions and 41 deletions
|
@ -1,6 +1,8 @@
|
|||
"""The tests the cover command line platform."""
|
||||
from __future__ import annotations
|
||||
|
||||
import asyncio
|
||||
from datetime import timedelta
|
||||
import os
|
||||
import tempfile
|
||||
from unittest.mock import patch
|
||||
|
@ -9,6 +11,7 @@ import pytest
|
|||
|
||||
from homeassistant import config as hass_config, setup
|
||||
from homeassistant.components.command_line import DOMAIN
|
||||
from homeassistant.components.command_line.cover import CommandCover
|
||||
from homeassistant.components.cover import DOMAIN as COVER_DOMAIN, SCAN_INTERVAL
|
||||
from homeassistant.const import (
|
||||
ATTR_ENTITY_ID,
|
||||
|
@ -320,3 +323,58 @@ async def test_unique_id(
|
|||
assert entity_registry.async_get_entity_id(
|
||||
"cover", "command_line", "not-so-unique-anymore"
|
||||
)
|
||||
|
||||
|
||||
async def test_updating_to_often(
|
||||
hass: HomeAssistant, caplog: pytest.LogCaptureFixture
|
||||
) -> None:
|
||||
"""Test handling updating when command already running."""
|
||||
called = []
|
||||
|
||||
class MockCommandCover(CommandCover):
|
||||
"""Mock entity that updates slow."""
|
||||
|
||||
async def _async_update(self) -> None:
|
||||
"""Update slow."""
|
||||
called.append(1)
|
||||
# Add waiting time
|
||||
await asyncio.sleep(1)
|
||||
|
||||
with patch(
|
||||
"homeassistant.components.command_line.cover.CommandCover",
|
||||
side_effect=MockCommandCover,
|
||||
):
|
||||
await setup.async_setup_component(
|
||||
hass,
|
||||
DOMAIN,
|
||||
{
|
||||
"command_line": [
|
||||
{
|
||||
"cover": {
|
||||
"command_state": "echo 1",
|
||||
"value_template": "{{ value }}",
|
||||
"name": "Test",
|
||||
"scan_interval": 0.1,
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
)
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert len(called) == 0
|
||||
assert (
|
||||
"Updating Command Line Cover Test took longer than the scheduled update interval"
|
||||
not in caplog.text
|
||||
)
|
||||
|
||||
async_fire_time_changed(hass, dt_util.now() + timedelta(seconds=1))
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert len(called) == 1
|
||||
assert (
|
||||
"Updating Command Line Cover Test took longer than the scheduled update interval"
|
||||
in caplog.text
|
||||
)
|
||||
|
||||
await asyncio.sleep(0.2)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue