core/tests/components/ecoforest/conftest.py

75 lines
2.1 KiB
Python

"""Common fixtures for the Ecoforest tests."""
from unittest.mock import AsyncMock, Mock, patch
from pyecoforest.models.device import Alarm, Device, OperationMode, State
import pytest
from typing_extensions import Generator
from homeassistant.components.ecoforest import DOMAIN
from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME
from homeassistant.core import HomeAssistant
from tests.common import MockConfigEntry
@pytest.fixture
def mock_setup_entry() -> Generator[AsyncMock]:
"""Override async_setup_entry."""
with patch(
"homeassistant.components.ecoforest.async_setup_entry", return_value=True
) as mock_setup_entry:
yield mock_setup_entry
@pytest.fixture(name="config")
def config_fixture():
"""Define a config entry data fixture."""
return {
CONF_HOST: "1.1.1.1",
CONF_USERNAME: "test-username",
CONF_PASSWORD: "test-password",
}
@pytest.fixture(name="serial_number")
def serial_number_fixture():
"""Define a serial number fixture."""
return "1234"
@pytest.fixture(name="mock_device")
def mock_device_fixture(serial_number):
"""Define a mocked Ecoforest device fixture."""
mock = Mock(spec=Device)
mock.model = "model-version"
mock.model_name = "model-name"
mock.firmware = "firmware-version"
mock.serial_number = serial_number
mock.operation_mode = OperationMode.POWER
mock.on = False
mock.state = State.OFF
mock.power = 3
mock.temperature = 21.5
mock.alarm = Alarm.PELLETS
mock.alarm_code = "A099"
mock.environment_temperature = 23.5
mock.cpu_temperature = 36.1
mock.gas_temperature = 40.2
mock.ntc_temperature = 24.2
return mock
@pytest.fixture(name="config_entry")
def config_entry_fixture(hass: HomeAssistant, config, serial_number):
"""Define a config entry fixture."""
entry = MockConfigEntry(
domain=DOMAIN,
entry_id="45a36e55aaddb2007c5f6602e0c38e72",
title=f"Ecoforest {serial_number}",
unique_id=serial_number,
data=config,
)
entry.add_to_hass(hass)
return entry