mirror of
https://github.com/home-assistant/core.git
synced 2026-05-28 03:06:30 +01:00
76 lines
2.2 KiB
Python
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
|