mirror of
https://github.com/home-assistant/core.git
synced 2025-07-07 13:27:09 +00:00
Add ability to load test fixtures on the executor (#144534)
This commit is contained in:
parent
34f92d584b
commit
8abbd35c54
@ -575,6 +575,13 @@ def load_fixture(filename: str, integration: str | None = None) -> str:
|
||||
return get_fixture_path(filename, integration).read_text(encoding="utf8")
|
||||
|
||||
|
||||
async def async_load_fixture(
|
||||
hass: HomeAssistant, filename: str, integration: str | None = None
|
||||
) -> str:
|
||||
"""Load a fixture."""
|
||||
return await hass.async_add_executor_job(load_fixture, filename, integration)
|
||||
|
||||
|
||||
def load_json_value_fixture(
|
||||
filename: str, integration: str | None = None
|
||||
) -> JsonValueType:
|
||||
@ -589,6 +596,13 @@ def load_json_array_fixture(
|
||||
return json_loads_array(load_fixture(filename, integration))
|
||||
|
||||
|
||||
async def async_load_json_array_fixture(
|
||||
hass: HomeAssistant, filename: str, integration: str | None = None
|
||||
) -> JsonArrayType:
|
||||
"""Load a JSON object from a fixture."""
|
||||
return json_loads_array(await async_load_fixture(hass, filename, integration))
|
||||
|
||||
|
||||
def load_json_object_fixture(
|
||||
filename: str, integration: str | None = None
|
||||
) -> JsonObjectType:
|
||||
@ -596,6 +610,13 @@ def load_json_object_fixture(
|
||||
return json_loads_object(load_fixture(filename, integration))
|
||||
|
||||
|
||||
async def async_load_json_object_fixture(
|
||||
hass: HomeAssistant, filename: str, integration: str | None = None
|
||||
) -> JsonObjectType:
|
||||
"""Load a JSON object from a fixture."""
|
||||
return json_loads_object(await async_load_fixture(hass, filename, integration))
|
||||
|
||||
|
||||
def json_round_trip(obj: Any) -> Any:
|
||||
"""Round trip an object to JSON."""
|
||||
return json_loads(json_dumps(obj))
|
||||
|
@ -1,7 +1,6 @@
|
||||
"""Fixtures for easyEnergy integration tests."""
|
||||
|
||||
from collections.abc import Generator
|
||||
import json
|
||||
from collections.abc import AsyncGenerator, Generator
|
||||
from unittest.mock import AsyncMock, MagicMock, patch
|
||||
|
||||
from easyenergy import Electricity, Gas
|
||||
@ -10,7 +9,7 @@ import pytest
|
||||
from homeassistant.components.easyenergy.const import DOMAIN
|
||||
from homeassistant.core import HomeAssistant
|
||||
|
||||
from tests.common import MockConfigEntry, load_fixture
|
||||
from tests.common import MockConfigEntry, async_load_json_array_fixture
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
@ -34,17 +33,17 @@ def mock_config_entry() -> MockConfigEntry:
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mock_easyenergy() -> Generator[MagicMock]:
|
||||
async def mock_easyenergy(hass: HomeAssistant) -> AsyncGenerator[MagicMock]:
|
||||
"""Return a mocked easyEnergy client."""
|
||||
with patch(
|
||||
"homeassistant.components.easyenergy.coordinator.EasyEnergy", autospec=True
|
||||
) as easyenergy_mock:
|
||||
client = easyenergy_mock.return_value
|
||||
client.energy_prices.return_value = Electricity.from_dict(
|
||||
json.loads(load_fixture("today_energy.json", DOMAIN))
|
||||
await async_load_json_array_fixture(hass, "today_energy.json", DOMAIN)
|
||||
)
|
||||
client.gas_prices.return_value = Gas.from_dict(
|
||||
json.loads(load_fixture("today_gas.json", DOMAIN))
|
||||
await async_load_json_array_fixture(hass, "today_gas.json", DOMAIN)
|
||||
)
|
||||
yield client
|
||||
|
||||
|
@ -1,7 +1,6 @@
|
||||
"""Fixtures for EnergyZero integration tests."""
|
||||
|
||||
from collections.abc import Generator
|
||||
import json
|
||||
from collections.abc import AsyncGenerator, Generator
|
||||
from unittest.mock import AsyncMock, MagicMock, patch
|
||||
|
||||
from energyzero import Electricity, Gas
|
||||
@ -10,7 +9,7 @@ import pytest
|
||||
from homeassistant.components.energyzero.const import DOMAIN
|
||||
from homeassistant.core import HomeAssistant
|
||||
|
||||
from tests.common import MockConfigEntry, load_fixture
|
||||
from tests.common import MockConfigEntry, async_load_json_object_fixture
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
@ -35,17 +34,17 @@ def mock_config_entry() -> MockConfigEntry:
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mock_energyzero() -> Generator[MagicMock]:
|
||||
async def mock_energyzero(hass: HomeAssistant) -> AsyncGenerator[MagicMock]:
|
||||
"""Return a mocked EnergyZero client."""
|
||||
with patch(
|
||||
"homeassistant.components.energyzero.coordinator.EnergyZero", autospec=True
|
||||
) as energyzero_mock:
|
||||
client = energyzero_mock.return_value
|
||||
client.energy_prices.return_value = Electricity.from_dict(
|
||||
json.loads(load_fixture("today_energy.json", DOMAIN))
|
||||
await async_load_json_object_fixture(hass, "today_energy.json", DOMAIN)
|
||||
)
|
||||
client.gas_prices.return_value = Gas.from_dict(
|
||||
json.loads(load_fixture("today_gas.json", DOMAIN))
|
||||
await async_load_json_object_fixture(hass, "today_gas.json", DOMAIN)
|
||||
)
|
||||
yield client
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user