1
0
mirror of https://github.com/home-assistant/core.git synced 2026-05-28 03:06:30 +01:00
Files
core/tests/components/zeversolar/conftest.py

76 lines
2.2 KiB
Python

"""Define mocks and test objects."""
from collections.abc import AsyncGenerator, Generator
from unittest.mock import MagicMock, patch
import pytest
from zeversolar import StatusEnum, ZeverSolarData
from homeassistant.components.zeversolar.const import DOMAIN
from homeassistant.const import CONF_HOST
from homeassistant.core import HomeAssistant
from . import MOCK_HOST_ZEVERSOLAR, MOCK_SERIAL_NUMBER
from tests.common import MockConfigEntry
@pytest.fixture
def config_entry() -> MockConfigEntry:
"""Create a mock config entry."""
return MockConfigEntry(
domain=DOMAIN,
data={CONF_HOST: MOCK_HOST_ZEVERSOLAR},
unique_id=MOCK_SERIAL_NUMBER,
)
@pytest.fixture
def zeversolar_data() -> ZeverSolarData:
"""Create a ZeverSolarData structure for tests."""
return ZeverSolarData(
wifi_enabled=False,
serial_or_registry_id="1223",
registry_key="A-2",
hardware_version="M10",
software_version="123-23",
reported_datetime="19900101 23:00",
communication_status=StatusEnum.OK,
num_inverters=1,
serial_number=MOCK_SERIAL_NUMBER,
pac=1234,
energy_today=123,
status=StatusEnum.OK,
meter_status=StatusEnum.OK,
)
@pytest.fixture
def mock_zeversolar_client(zeversolar_data: ZeverSolarData) -> Generator[MagicMock]:
"""Mock the ZeverSolar client."""
with (
patch(
"homeassistant.components.zeversolar.coordinator.zeversolar.ZeverSolarClient",
autospec=True,
) as mock_client,
patch(
"homeassistant.components.zeversolar.config_flow.zeversolar.ZeverSolarClient",
new=mock_client,
),
):
mock_client.return_value.get_data.return_value = zeversolar_data
yield mock_client.return_value
@pytest.fixture
async def init_integration(
hass: HomeAssistant,
config_entry: MockConfigEntry,
mock_zeversolar_client: MagicMock,
) -> AsyncGenerator[MockConfigEntry]:
"""Set up the Zeversolar integration for testing."""
config_entry.add_to_hass(hass)
await hass.config_entries.async_setup(config_entry.entry_id)
await hass.async_block_till_done()
return config_entry