mirror of https://github.com/home-assistant/core
87 lines
2.5 KiB
Python
87 lines
2.5 KiB
Python
"""Fixtures for Kostal Plenticore tests."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from collections.abc import Generator
|
|
from unittest.mock import AsyncMock, MagicMock, patch
|
|
|
|
from pykoplenti import MeData, VersionData
|
|
import pytest
|
|
|
|
from homeassistant.components.kostal_plenticore.coordinator import Plenticore
|
|
from homeassistant.core import HomeAssistant
|
|
from homeassistant.helpers.device_registry import DeviceInfo
|
|
|
|
from tests.common import MockConfigEntry
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_config_entry() -> MockConfigEntry:
|
|
"""Return a mocked ConfigEntry for testing."""
|
|
return MockConfigEntry(
|
|
entry_id="2ab8dd92a62787ddfe213a67e09406bd",
|
|
title="scb",
|
|
domain="kostal_plenticore",
|
|
data={"host": "192.168.1.2", "password": "SecretPassword"},
|
|
)
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_plenticore() -> Generator[Plenticore]:
|
|
"""Set up a Plenticore mock with some default values."""
|
|
with patch(
|
|
"homeassistant.components.kostal_plenticore.Plenticore", autospec=True
|
|
) as mock_api_class:
|
|
# setup
|
|
plenticore = mock_api_class.return_value
|
|
plenticore.async_setup = AsyncMock()
|
|
plenticore.async_setup.return_value = True
|
|
|
|
plenticore.device_info = DeviceInfo(
|
|
configuration_url="http://192.168.1.2",
|
|
identifiers={("kostal_plenticore", "12345")},
|
|
manufacturer="Kostal",
|
|
model="PLENTICORE plus 10",
|
|
name="scb",
|
|
sw_version="IOC: 01.45 MC: 01.46",
|
|
)
|
|
|
|
plenticore.client = MagicMock()
|
|
|
|
plenticore.client.get_version = AsyncMock()
|
|
plenticore.client.get_version.return_value = VersionData(
|
|
api_version="0.2.0",
|
|
hostname="scb",
|
|
name="PUCK RESTful API",
|
|
sw_version="01.16.05025",
|
|
)
|
|
|
|
plenticore.client.get_me = AsyncMock()
|
|
plenticore.client.get_me.return_value = MeData(
|
|
locked=False,
|
|
active=True,
|
|
authenticated=True,
|
|
permissions=[],
|
|
anonymous=False,
|
|
role="USER",
|
|
)
|
|
|
|
plenticore.client.get_process_data = AsyncMock()
|
|
plenticore.client.get_settings = AsyncMock()
|
|
|
|
yield plenticore
|
|
|
|
|
|
@pytest.fixture
|
|
async def init_integration(
|
|
hass: HomeAssistant, mock_config_entry: MockConfigEntry
|
|
) -> MockConfigEntry:
|
|
"""Set up Kostal Plenticore integration for testing."""
|
|
|
|
mock_config_entry.add_to_hass(hass)
|
|
|
|
await hass.config_entries.async_setup(mock_config_entry.entry_id)
|
|
await hass.async_block_till_done()
|
|
|
|
return mock_config_entry
|