72 lines
2.3 KiB
Python
72 lines
2.3 KiB
Python
"""Tradfri sensor platform tests."""
|
|
|
|
from unittest.mock import MagicMock, Mock
|
|
|
|
from .common import setup_integration
|
|
|
|
|
|
def mock_sensor(state_name: str, state_value: str, device_number=0):
|
|
"""Mock a tradfri sensor."""
|
|
dev_info_mock = MagicMock()
|
|
dev_info_mock.manufacturer = "manufacturer"
|
|
dev_info_mock.model_number = "model"
|
|
dev_info_mock.firmware_version = "1.2.3"
|
|
|
|
# Set state value, eg battery_level = 50
|
|
setattr(dev_info_mock, state_name, state_value)
|
|
|
|
_mock_sensor = Mock(
|
|
id=f"mock-sensor-id-{device_number}",
|
|
reachable=True,
|
|
observe=Mock(),
|
|
device_info=dev_info_mock,
|
|
has_light_control=False,
|
|
has_socket_control=False,
|
|
has_blind_control=False,
|
|
has_signal_repeater_control=False,
|
|
has_air_purifier_control=False,
|
|
)
|
|
_mock_sensor.name = f"tradfri_sensor_{device_number}"
|
|
|
|
return _mock_sensor
|
|
|
|
|
|
async def test_battery_sensor(hass, mock_gateway, mock_api_factory):
|
|
"""Test that a battery sensor is correctly added."""
|
|
mock_gateway.mock_devices.append(
|
|
mock_sensor(state_name="battery_level", state_value=60)
|
|
)
|
|
await setup_integration(hass)
|
|
|
|
sensor_1 = hass.states.get("sensor.tradfri_sensor_0")
|
|
assert sensor_1 is not None
|
|
assert sensor_1.state == "60"
|
|
assert sensor_1.attributes["unit_of_measurement"] == "%"
|
|
assert sensor_1.attributes["device_class"] == "battery"
|
|
|
|
|
|
async def test_sensor_observed(hass, mock_gateway, mock_api_factory):
|
|
"""Test that sensors are correctly observed."""
|
|
|
|
sensor = mock_sensor(state_name="battery_level", state_value=60)
|
|
mock_gateway.mock_devices.append(sensor)
|
|
await setup_integration(hass)
|
|
assert len(sensor.observe.mock_calls) > 0
|
|
|
|
|
|
async def test_sensor_available(hass, mock_gateway, mock_api_factory):
|
|
"""Test sensor available property."""
|
|
|
|
sensor = mock_sensor(state_name="battery_level", state_value=60, device_number=1)
|
|
sensor.reachable = True
|
|
|
|
sensor2 = mock_sensor(state_name="battery_level", state_value=60, device_number=2)
|
|
sensor2.reachable = False
|
|
|
|
mock_gateway.mock_devices.append(sensor)
|
|
mock_gateway.mock_devices.append(sensor2)
|
|
await setup_integration(hass)
|
|
|
|
assert hass.states.get("sensor.tradfri_sensor_1").state == "60"
|
|
assert hass.states.get("sensor.tradfri_sensor_2").state == "unavailable"
|