core/tests/components/kostal_plenticore/conftest.py

90 lines
2.7 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.helper import Plenticore
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity 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, None, None]:
"""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