2023-03-09 18:04:07 +00:00
|
|
|
"""Test helpers."""
|
|
|
|
from collections.abc import Generator
|
2023-05-24 12:57:35 +00:00
|
|
|
from unittest.mock import AsyncMock, Mock, patch
|
2023-03-09 18:04:07 +00:00
|
|
|
|
2023-05-24 12:57:35 +00:00
|
|
|
from pyfibaro.fibaro_scene import SceneModel
|
2023-03-09 18:04:07 +00:00
|
|
|
import pytest
|
|
|
|
|
2023-09-18 18:22:23 +00:00
|
|
|
from homeassistant.components.fibaro import DOMAIN
|
2023-08-10 16:22:39 +00:00
|
|
|
from homeassistant.config_entries import ConfigEntry
|
2023-05-24 12:57:35 +00:00
|
|
|
from homeassistant.const import Platform
|
|
|
|
from homeassistant.core import HomeAssistant
|
|
|
|
|
2023-08-10 16:22:39 +00:00
|
|
|
from tests.common import MockConfigEntry
|
|
|
|
|
2023-03-09 18:04:07 +00:00
|
|
|
|
|
|
|
@pytest.fixture
|
|
|
|
def mock_setup_entry() -> Generator[AsyncMock, None, None]:
|
|
|
|
"""Override async_setup_entry."""
|
|
|
|
with patch(
|
|
|
|
"homeassistant.components.fibaro.async_setup_entry", return_value=True
|
|
|
|
) as mock_setup_entry:
|
|
|
|
yield mock_setup_entry
|
2023-05-24 12:57:35 +00:00
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture(name="fibaro_scene")
|
|
|
|
def mock_scene() -> SceneModel:
|
|
|
|
"""Fixture for an individual scene."""
|
|
|
|
scene = Mock(SceneModel)
|
|
|
|
scene.fibaro_id = 1
|
|
|
|
scene.name = "Test scene"
|
|
|
|
scene.room_id = 1
|
|
|
|
scene.visible = True
|
|
|
|
return scene
|
|
|
|
|
|
|
|
|
|
|
|
async def setup_platform(
|
|
|
|
hass: HomeAssistant,
|
|
|
|
platform: Platform,
|
|
|
|
room_name: str | None,
|
|
|
|
scenes: list[SceneModel],
|
|
|
|
) -> ConfigEntry:
|
|
|
|
"""Set up the fibaro platform and prerequisites."""
|
|
|
|
hass.config.components.add(DOMAIN)
|
2023-08-10 16:22:39 +00:00
|
|
|
config_entry = MockConfigEntry(domain=DOMAIN, title="Test")
|
|
|
|
config_entry.add_to_hass(hass)
|
2023-05-24 12:57:35 +00:00
|
|
|
|
|
|
|
controller_mock = Mock()
|
|
|
|
controller_mock.hub_serial = "HC2-111111"
|
|
|
|
controller_mock.get_room_name.return_value = room_name
|
2023-09-23 17:13:03 +00:00
|
|
|
controller_mock.read_scenes.return_value = scenes
|
2023-05-24 12:57:35 +00:00
|
|
|
|
2023-09-18 18:22:23 +00:00
|
|
|
hass.data[DOMAIN] = {config_entry.entry_id: controller_mock}
|
2023-05-24 12:57:35 +00:00
|
|
|
await hass.config_entries.async_forward_entry_setup(config_entry, platform)
|
|
|
|
await hass.async_block_till_done()
|
|
|
|
return config_entry
|