1
0
mirror of https://github.com/home-assistant/core.git synced 2026-02-27 21:35:48 +00:00
Files
core/tests/components/compit/test_sensor.py
2026-02-24 21:49:47 +01:00

113 lines
3.6 KiB
Python

"""Tests for the Compit sensor platform."""
from typing import Any
from unittest.mock import MagicMock
import pytest
from syrupy.assertion import SnapshotAssertion
from homeassistant.const import Platform
from homeassistant.core import HomeAssistant
from homeassistant.helpers import entity_registry as er
from . import setup_integration, snapshot_compit_entities
from tests.common import MockConfigEntry
async def test_sensor_entities_snapshot(
hass: HomeAssistant,
entity_registry: er.EntityRegistry,
mock_config_entry: MockConfigEntry,
mock_connector,
snapshot: SnapshotAssertion,
) -> None:
"""Snapshot test for sensor entities creation, unique IDs, and device info."""
await setup_integration(hass, mock_config_entry)
snapshot_compit_entities(hass, entity_registry, snapshot, Platform.SENSOR)
@pytest.mark.parametrize(
("mock_return_value", "test_description"),
[
(None, "parameter is None"),
("damaged_supply_sensor", "parameter value is enum"),
],
)
async def test_sensor_return_value_enum_sensor(
hass: HomeAssistant,
mock_config_entry: MockConfigEntry,
mock_connector: MagicMock,
mock_return_value: Any | None,
test_description: str,
) -> None:
"""Test that sensor entity shows unknown when get_current_option returns various invalid values."""
mock_connector.get_current_value.side_effect = lambda device_id, parameter_code: (
mock_return_value
)
await setup_integration(hass, mock_config_entry)
state = hass.states.get("sensor.nano_color_2_ventilation_alarm")
assert state is not None
expected_state = mock_return_value or "unknown"
assert state.state == expected_state
async def test_sensor_enum_value_cannot_return_number(
hass: HomeAssistant,
mock_config_entry: MockConfigEntry,
mock_connector: MagicMock,
) -> None:
"""Test that sensor entity shows unknown when get_current_option returns various invalid values."""
mock_connector.get_current_value.side_effect = lambda device_id, parameter_code: (
123 # Invalid enum value
)
await setup_integration(hass, mock_config_entry)
state = hass.states.get("sensor.nano_color_2_ventilation_alarm")
assert state is None
@pytest.mark.parametrize(
("mock_return_value", "test_description"),
[
(None, "parameter is None"),
(21, "parameter value is number"),
],
)
async def test_sensor_return_value_number_sensor(
hass: HomeAssistant,
mock_config_entry: MockConfigEntry,
mock_connector: MagicMock,
mock_return_value: Any | None,
test_description: str,
) -> None:
"""Test that sensor entity shows correct number value."""
mock_connector.get_current_value.side_effect = lambda device_id, parameter_code: (
mock_return_value
)
await setup_integration(hass, mock_config_entry)
state = hass.states.get("sensor.r_900_calculated_buffer_temperature")
assert state is not None
expected_state = (
str(mock_return_value) if mock_return_value is not None else "unknown"
)
assert state.state == expected_state
async def test_sensor_number_value_cannot_return_enum(
hass: HomeAssistant,
mock_config_entry: MockConfigEntry,
mock_connector: MagicMock,
) -> None:
"""Test that sensor entity shows unknown when get_current_value returns enum instead of number."""
mock_connector.get_current_value.side_effect = lambda device_id, parameter_code: (
"eco" # Invalid number value
)
await setup_integration(hass, mock_config_entry)
state = hass.states.get("sensor.r_900_calculated_buffer_temperature")
assert state is not None and state.state == "unknown"