core/tests/components/energyzero/test_diagnostics.py

58 lines
1.7 KiB
Python

"""Tests for the diagnostics data provided by the EnergyZero integration."""
from unittest.mock import AsyncMock, MagicMock
from energyzero import EnergyZeroNoDataError
from freezegun.api import FrozenDateTimeFactory
import pytest
from syrupy.assertion import SnapshotAssertion
from homeassistant.components.energyzero.const import SCAN_INTERVAL
from homeassistant.core import HomeAssistant
from . import setup_integration
from tests.common import MockConfigEntry, async_fire_time_changed
from tests.components.diagnostics import get_diagnostics_for_config_entry
from tests.typing import ClientSessionGenerator
pytestmark = pytest.mark.freeze_time("2022-12-07 15:00:00")
async def test_entry_diagnostics(
hass: HomeAssistant,
hass_client: ClientSessionGenerator,
mock_energyzero: AsyncMock,
mock_config_entry: MockConfigEntry,
snapshot: SnapshotAssertion,
) -> None:
"""Test the EnergyZero entry diagnostics."""
await setup_integration(hass, mock_config_entry)
result = await get_diagnostics_for_config_entry(
hass, hass_client, mock_config_entry
)
assert result == snapshot
async def test_diagnostics_no_gas_today(
hass: HomeAssistant,
hass_client: ClientSessionGenerator,
mock_energyzero: MagicMock,
init_integration: MockConfigEntry,
freezer: FrozenDateTimeFactory,
snapshot: SnapshotAssertion,
) -> None:
"""Test diagnostics, no gas sensors available."""
mock_energyzero.gas_prices.side_effect = EnergyZeroNoDataError
freezer.tick(SCAN_INTERVAL)
async_fire_time_changed(hass)
await hass.async_block_till_done()
assert (
await get_diagnostics_for_config_entry(hass, hass_client, init_integration)
== snapshot
)