mirror of
https://github.com/home-assistant/core.git
synced 2026-04-29 02:13:44 +02:00
Fix Slide local tests (#151569)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
This commit is contained in:
committed by
GitHub
parent
61c904d225
commit
a8f56e4b96
@@ -1,11 +1,13 @@
|
||||
"""Tests for the slide_local integration."""
|
||||
|
||||
from typing import Any
|
||||
from unittest.mock import patch
|
||||
|
||||
from homeassistant.components.slide_local.const import DOMAIN
|
||||
from homeassistant.const import Platform
|
||||
from homeassistant.core import HomeAssistant
|
||||
|
||||
from tests.common import MockConfigEntry
|
||||
from tests.common import MockConfigEntry, load_json_object_fixture
|
||||
|
||||
|
||||
async def setup_platform(
|
||||
@@ -19,3 +21,11 @@ async def setup_platform(
|
||||
await hass.async_block_till_done()
|
||||
|
||||
return config_entry
|
||||
|
||||
|
||||
def get_data() -> dict[str, Any]:
|
||||
"""Return the default state data.
|
||||
|
||||
The coordinator mutates the returned API data, so we can't return a glocal dict.
|
||||
"""
|
||||
return load_json_object_fixture("slide_1.json", DOMAIN)
|
||||
|
||||
@@ -8,7 +8,8 @@ import pytest
|
||||
from homeassistant.components.slide_local.const import CONF_INVERT_POSITION, DOMAIN
|
||||
from homeassistant.const import CONF_API_VERSION, CONF_HOST, CONF_MAC
|
||||
|
||||
from .const import HOST, SLIDE_INFO_DATA
|
||||
from . import get_data
|
||||
from .const import HOST
|
||||
|
||||
from tests.common import MockConfigEntry
|
||||
|
||||
@@ -48,7 +49,7 @@ def mock_slide_api() -> Generator[AsyncMock]:
|
||||
),
|
||||
):
|
||||
client = mock_slide_local_api.return_value
|
||||
client.slide_info.return_value = SLIDE_INFO_DATA
|
||||
client.slide_info.return_value = get_data()
|
||||
yield client
|
||||
|
||||
|
||||
|
||||
@@ -1,8 +1,3 @@
|
||||
"""Common const used across tests for slide_local."""
|
||||
|
||||
from homeassistant.components.slide_local.const import DOMAIN
|
||||
|
||||
from tests.common import load_json_object_fixture
|
||||
|
||||
HOST = "127.0.0.2"
|
||||
SLIDE_INFO_DATA = load_json_object_fixture("slide_1.json", DOMAIN)
|
||||
|
||||
@@ -18,8 +18,8 @@ from homeassistant.core import HomeAssistant
|
||||
from homeassistant.data_entry_flow import FlowResultType
|
||||
from homeassistant.helpers.service_info.zeroconf import ZeroconfServiceInfo
|
||||
|
||||
from . import setup_platform
|
||||
from .const import HOST, SLIDE_INFO_DATA
|
||||
from . import get_data, setup_platform
|
||||
from .const import HOST
|
||||
|
||||
from tests.common import MockConfigEntry
|
||||
|
||||
@@ -82,7 +82,10 @@ async def test_user_api_1(
|
||||
assert result["type"] is FlowResultType.FORM
|
||||
assert result["errors"] == {}
|
||||
|
||||
mock_slide_api.slide_info.side_effect = [None, SLIDE_INFO_DATA]
|
||||
mock_slide_api.slide_info.side_effect = [
|
||||
None,
|
||||
get_data(),
|
||||
]
|
||||
|
||||
result2 = await hass.config_entries.flow.async_configure(
|
||||
result["flow_id"],
|
||||
@@ -129,7 +132,10 @@ async def test_user_api_error(
|
||||
assert result["step_id"] == "user"
|
||||
assert result["errors"]["base"] == "unknown"
|
||||
|
||||
mock_slide_api.slide_info.side_effect = [None, SLIDE_INFO_DATA]
|
||||
mock_slide_api.slide_info.side_effect = [
|
||||
None,
|
||||
get_data(),
|
||||
]
|
||||
|
||||
result2 = await hass.config_entries.flow.async_configure(
|
||||
result["flow_id"],
|
||||
@@ -188,7 +194,10 @@ async def test_api_1_exceptions(
|
||||
assert result["errors"]["base"] == error
|
||||
|
||||
# tests with all provided
|
||||
mock_slide_api.slide_info.side_effect = [None, SLIDE_INFO_DATA]
|
||||
mock_slide_api.slide_info.side_effect = [
|
||||
None,
|
||||
get_data(),
|
||||
]
|
||||
|
||||
result = await hass.config_entries.flow.async_configure(
|
||||
result["flow_id"],
|
||||
|
||||
@@ -20,8 +20,7 @@ from homeassistant.const import ATTR_ENTITY_ID, STATE_UNAVAILABLE, Platform
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers import entity_registry as er
|
||||
|
||||
from . import setup_platform
|
||||
from .const import SLIDE_INFO_DATA
|
||||
from . import get_data, setup_platform
|
||||
|
||||
from tests.common import MockConfigEntry, async_fire_time_changed, snapshot_platform
|
||||
|
||||
@@ -48,7 +47,9 @@ async def test_connection_error(
|
||||
"""Test connection error."""
|
||||
await setup_platform(hass, mock_config_entry, [Platform.COVER])
|
||||
|
||||
mock_slide_api.slide_info.side_effect = [ClientConnectionError, SLIDE_INFO_DATA]
|
||||
assert hass.states.get("cover.slide_bedroom").state == CoverState.OPEN
|
||||
|
||||
mock_slide_api.slide_info.side_effect = [ClientConnectionError, get_data()]
|
||||
|
||||
freezer.tick(delta=timedelta(minutes=1))
|
||||
async_fire_time_changed(hass)
|
||||
@@ -69,15 +70,13 @@ async def test_state_change(
|
||||
mock_config_entry: MockConfigEntry,
|
||||
freezer: FrozenDateTimeFactory,
|
||||
) -> None:
|
||||
"""Test connection error."""
|
||||
"""Test state changes."""
|
||||
await setup_platform(hass, mock_config_entry, [Platform.COVER])
|
||||
|
||||
mock_slide_api.slide_info.side_effect = [
|
||||
dict(SLIDE_INFO_DATA, pos=0.0),
|
||||
dict(SLIDE_INFO_DATA, pos=0.4),
|
||||
dict(SLIDE_INFO_DATA, pos=1.0),
|
||||
dict(SLIDE_INFO_DATA, pos=0.8),
|
||||
]
|
||||
mock_slide_api.slide_info.return_value = {
|
||||
**get_data(),
|
||||
"pos": 0.0,
|
||||
}
|
||||
|
||||
freezer.tick(delta=timedelta(minutes=1))
|
||||
async_fire_time_changed(hass)
|
||||
@@ -85,18 +84,24 @@ async def test_state_change(
|
||||
|
||||
assert hass.states.get("cover.slide_bedroom").state == CoverState.OPEN
|
||||
|
||||
mock_slide_api.slide_info.return_value = {**get_data(), "pos": 0.4}
|
||||
|
||||
freezer.tick(delta=timedelta(seconds=15))
|
||||
async_fire_time_changed(hass)
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert hass.states.get("cover.slide_bedroom").state == CoverState.CLOSING
|
||||
|
||||
mock_slide_api.slide_info.return_value = {**get_data(), "pos": 1.0}
|
||||
|
||||
freezer.tick(delta=timedelta(seconds=15))
|
||||
async_fire_time_changed(hass)
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert hass.states.get("cover.slide_bedroom").state == CoverState.CLOSED
|
||||
|
||||
mock_slide_api.slide_info.return_value = {**get_data(), "pos": 0.8}
|
||||
|
||||
freezer.tick(delta=timedelta(seconds=15))
|
||||
async_fire_time_changed(hass)
|
||||
await hass.async_block_till_done()
|
||||
@@ -171,12 +176,7 @@ async def test_set_position(
|
||||
|
||||
await setup_platform(hass, mock_config_entry, [Platform.COVER])
|
||||
|
||||
mock_slide_api.slide_info.side_effect = [
|
||||
dict(SLIDE_INFO_DATA, pos=0.0),
|
||||
dict(SLIDE_INFO_DATA, pos=1.0),
|
||||
dict(SLIDE_INFO_DATA, pos=1.0),
|
||||
dict(SLIDE_INFO_DATA, pos=0.0),
|
||||
]
|
||||
mock_slide_api.slide_info.return_value = {**get_data(), "pos": 0.0}
|
||||
|
||||
freezer.tick(delta=timedelta(seconds=15))
|
||||
async_fire_time_changed(hass)
|
||||
@@ -189,6 +189,8 @@ async def test_set_position(
|
||||
blocking=True,
|
||||
)
|
||||
|
||||
mock_slide_api.slide_info.return_value = {**get_data(), "pos": 1.0}
|
||||
|
||||
freezer.tick(delta=timedelta(seconds=15))
|
||||
async_fire_time_changed(hass)
|
||||
await hass.async_block_till_done()
|
||||
@@ -206,6 +208,8 @@ async def test_set_position(
|
||||
blocking=True,
|
||||
)
|
||||
|
||||
mock_slide_api.slide_info.return_value = {**get_data(), "pos": 0.0}
|
||||
|
||||
freezer.tick(delta=timedelta(seconds=15))
|
||||
async_fire_time_changed(hass)
|
||||
await hass.async_block_till_done()
|
||||
|
||||
Reference in New Issue
Block a user