mirror of https://github.com/home-assistant/core
85 lines
2.5 KiB
Python
85 lines
2.5 KiB
Python
"""Common methods for Sense."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from collections.abc import Generator
|
|
import datetime
|
|
from unittest.mock import AsyncMock, MagicMock, PropertyMock, patch
|
|
|
|
import pytest
|
|
from sense_energy import Scale
|
|
|
|
from homeassistant.components.sense.binary_sensor import SenseDevice
|
|
from homeassistant.components.sense.const import DOMAIN
|
|
|
|
from .const import (
|
|
DEVICE_1_DAY_ENERGY,
|
|
DEVICE_1_ID,
|
|
DEVICE_1_NAME,
|
|
DEVICE_1_POWER,
|
|
DEVICE_2_DAY_ENERGY,
|
|
DEVICE_2_ID,
|
|
DEVICE_2_NAME,
|
|
DEVICE_2_POWER,
|
|
MOCK_CONFIG,
|
|
MONITOR_ID,
|
|
)
|
|
|
|
from tests.common import MockConfigEntry
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_setup_entry() -> Generator[AsyncMock]:
|
|
"""Override async_setup_entry."""
|
|
with patch(
|
|
"homeassistant.components.sense.async_setup_entry", return_value=True
|
|
) as mock_setup_entry:
|
|
yield mock_setup_entry
|
|
|
|
|
|
@pytest.fixture
|
|
def config_entry() -> MockConfigEntry:
|
|
"""Mock sense config entry."""
|
|
return MockConfigEntry(
|
|
domain=DOMAIN,
|
|
data=MOCK_CONFIG,
|
|
unique_id="test-email",
|
|
)
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_sense() -> Generator[MagicMock]:
|
|
"""Mock an ASyncSenseable object with a split foundation."""
|
|
with patch("homeassistant.components.sense.ASyncSenseable", autospec=True) as mock:
|
|
gateway = mock.return_value
|
|
gateway.sense_monitor_id = MONITOR_ID
|
|
gateway.get_monitor_data.return_value = None
|
|
gateway.update_realtime.return_value = None
|
|
gateway.fetch_devices.return_value = None
|
|
gateway.update_trend_data.return_value = None
|
|
|
|
type(gateway).active_power = PropertyMock(return_value=100)
|
|
type(gateway).active_solar_power = PropertyMock(return_value=500)
|
|
type(gateway).active_voltage = PropertyMock(return_value=[120, 240])
|
|
gateway.get_stat.return_value = 15
|
|
gateway.trend_start.return_value = datetime.datetime.fromisoformat(
|
|
"2024-01-01 01:01:00+00:00"
|
|
)
|
|
|
|
device_1 = SenseDevice(DEVICE_1_ID)
|
|
device_1.name = DEVICE_1_NAME
|
|
device_1.icon = "car"
|
|
device_1.is_on = False
|
|
device_1.power_w = DEVICE_1_POWER
|
|
device_1.energy_kwh[Scale.DAY] = DEVICE_1_DAY_ENERGY
|
|
|
|
device_2 = SenseDevice(DEVICE_2_ID)
|
|
device_2.name = DEVICE_2_NAME
|
|
device_2.icon = "stove"
|
|
device_2.is_on = False
|
|
device_2.power_w = DEVICE_2_POWER
|
|
device_2.energy_kwh[Scale.DAY] = DEVICE_2_DAY_ENERGY
|
|
type(gateway).devices = PropertyMock(return_value=[device_1, device_2])
|
|
|
|
yield gateway
|