Correct typing on hass_storage fixure (#87986)
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>pull/88003/head
parent
dc8ceaf4bf
commit
950ee34514
|
@ -113,6 +113,7 @@ _TEST_FIXTURES: dict[str, list[str] | str] = {
|
||||||
"hass_read_only_access_token": "str",
|
"hass_read_only_access_token": "str",
|
||||||
"hass_read_only_user": "MockUser",
|
"hass_read_only_user": "MockUser",
|
||||||
"hass_recorder": "Callable[..., HomeAssistant]",
|
"hass_recorder": "Callable[..., HomeAssistant]",
|
||||||
|
"hass_storage": "dict[str, Any]",
|
||||||
"hass_supervisor_access_token": "str",
|
"hass_supervisor_access_token": "str",
|
||||||
"hass_supervisor_user": "MockUser",
|
"hass_supervisor_user": "MockUser",
|
||||||
"hass_ws_client": "WebSocketGenerator",
|
"hass_ws_client": "WebSocketGenerator",
|
||||||
|
|
|
@ -3,7 +3,14 @@ from __future__ import annotations
|
||||||
|
|
||||||
import asyncio
|
import asyncio
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
from collections.abc import Awaitable, Callable, Collection, Mapping, Sequence
|
from collections.abc import (
|
||||||
|
Awaitable,
|
||||||
|
Callable,
|
||||||
|
Collection,
|
||||||
|
Generator,
|
||||||
|
Mapping,
|
||||||
|
Sequence,
|
||||||
|
)
|
||||||
from contextlib import contextmanager
|
from contextlib import contextmanager
|
||||||
from datetime import datetime, timedelta, timezone
|
from datetime import datetime, timedelta, timezone
|
||||||
import functools as ft
|
import functools as ft
|
||||||
|
@ -1205,7 +1212,9 @@ class MockEntity(entity.Entity):
|
||||||
|
|
||||||
|
|
||||||
@contextmanager
|
@contextmanager
|
||||||
def mock_storage(data=None):
|
def mock_storage(
|
||||||
|
data: dict[str, Any] | None = None
|
||||||
|
) -> Generator[dict[str, Any], None, None]:
|
||||||
"""Mock storage.
|
"""Mock storage.
|
||||||
|
|
||||||
Data is a dict {'key': {'version': version, 'data': data}}
|
Data is a dict {'key': {'version': version, 'data': data}}
|
||||||
|
@ -1217,7 +1226,9 @@ def mock_storage(data=None):
|
||||||
|
|
||||||
orig_load = storage.Store._async_load
|
orig_load = storage.Store._async_load
|
||||||
|
|
||||||
async def mock_async_load(store):
|
async def mock_async_load(
|
||||||
|
store: storage.Store,
|
||||||
|
) -> dict[str, Any] | list[Any] | None:
|
||||||
"""Mock version of load."""
|
"""Mock version of load."""
|
||||||
if store._data is None:
|
if store._data is None:
|
||||||
# No data to load
|
# No data to load
|
||||||
|
@ -1237,14 +1248,16 @@ def mock_storage(data=None):
|
||||||
_LOGGER.debug("Loading data for %s: %s", store.key, loaded)
|
_LOGGER.debug("Loading data for %s: %s", store.key, loaded)
|
||||||
return loaded
|
return loaded
|
||||||
|
|
||||||
async def mock_write_data(store, path, data_to_write):
|
async def mock_write_data(
|
||||||
|
store: storage.Store, path: str, data_to_write: dict[str, Any]
|
||||||
|
) -> None:
|
||||||
"""Mock version of write data."""
|
"""Mock version of write data."""
|
||||||
# To ensure that the data can be serialized
|
# To ensure that the data can be serialized
|
||||||
_LOGGER.debug("Writing data to %s: %s", store.key, data_to_write)
|
_LOGGER.debug("Writing data to %s: %s", store.key, data_to_write)
|
||||||
raise_contains_mocks(data_to_write)
|
raise_contains_mocks(data_to_write)
|
||||||
data[store.key] = json.loads(json.dumps(data_to_write, cls=store._encoder))
|
data[store.key] = json.loads(json.dumps(data_to_write, cls=store._encoder))
|
||||||
|
|
||||||
async def mock_remove(store):
|
async def mock_remove(store: storage.Store) -> None:
|
||||||
"""Remove data."""
|
"""Remove data."""
|
||||||
data.pop(store.key, None)
|
data.pop(store.key, None)
|
||||||
|
|
||||||
|
|
|
@ -98,7 +98,7 @@ def sensor_platforms_only() -> Generator[None, None, None]:
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(autouse=True)
|
@pytest.fixture(autouse=True)
|
||||||
def mock_storage(hass_storage: Generator[dict[str, Any], None, None]) -> None:
|
def mock_storage(hass_storage: dict[str, Any]) -> None:
|
||||||
"""Autouse hass_storage for the TestCase tests."""
|
"""Autouse hass_storage for the TestCase tests."""
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -302,7 +302,7 @@ def bcrypt_cost() -> Generator[None, None, None]:
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def hass_storage():
|
def hass_storage() -> Generator[dict[str, Any], None, None]:
|
||||||
"""Fixture to mock storage."""
|
"""Fixture to mock storage."""
|
||||||
with mock_storage() as stored_data:
|
with mock_storage() as stored_data:
|
||||||
yield stored_data
|
yield stored_data
|
||||||
|
|
Loading…
Reference in New Issue