core/tests/components/duke_energy/conftest.py

91 lines
2.4 KiB
Python

"""Common fixtures for the Duke Energy tests."""
from collections.abc import Generator
from unittest.mock import AsyncMock, patch
import pytest
from homeassistant.components.duke_energy.const import DOMAIN
from homeassistant.const import CONF_EMAIL, CONF_PASSWORD, CONF_USERNAME
from homeassistant.core import HomeAssistant
from homeassistant.util import dt as dt_util
from tests.common import MockConfigEntry
from tests.typing import RecorderInstanceGenerator
@pytest.fixture
async def mock_recorder_before_hass(
async_test_recorder: RecorderInstanceGenerator,
) -> None:
"""Set up recorder."""
@pytest.fixture
def mock_setup_entry() -> Generator[AsyncMock]:
"""Override async_setup_entry."""
with patch(
"homeassistant.components.duke_energy.async_setup_entry",
return_value=True,
) as mock_setup_entry:
yield mock_setup_entry
@pytest.fixture
def mock_config_entry(hass: HomeAssistant) -> Generator[AsyncMock]:
"""Return the default mocked config entry."""
config_entry = MockConfigEntry(
domain=DOMAIN,
data={
CONF_EMAIL: "test@example.com",
CONF_USERNAME: "test-username",
CONF_PASSWORD: "test-password",
},
)
config_entry.add_to_hass(hass)
return config_entry
@pytest.fixture
def mock_api() -> Generator[AsyncMock]:
"""Mock a successful Duke Energy API."""
with (
patch(
"homeassistant.components.duke_energy.config_flow.DukeEnergy",
autospec=True,
) as mock_api,
patch(
"homeassistant.components.duke_energy.coordinator.DukeEnergy",
new=mock_api,
),
):
api = mock_api.return_value
api.authenticate.return_value = {
"email": "TEST@EXAMPLE.COM",
"cdp_internal_user_id": "test-username",
}
api.get_meters.return_value = {}
yield api
@pytest.fixture
def mock_api_with_meters(mock_api: AsyncMock) -> AsyncMock:
"""Mock a successful Duke Energy API with meters."""
mock_api.get_meters.return_value = {
"123": {
"serialNum": "123",
"serviceType": "ELECTRIC",
"agreementActiveDate": "2000-01-01",
},
}
mock_api.get_energy_usage.return_value = {
"data": {
dt_util.now(): {
"energy": 1.3,
"temperature": 70,
}
},
"missing": [],
}
return mock_api