Add Poolsense platform tests (#117579)

This commit is contained in:
Joost Lekkerkerker 2024-05-16 21:35:00 +02:00 committed by GitHub
parent 9aa7d3057b
commit 68b7302cdc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 606 additions and 5 deletions

View file

@ -1055,11 +1055,6 @@ omit =
homeassistant/components/point/alarm_control_panel.py
homeassistant/components/point/binary_sensor.py
homeassistant/components/point/sensor.py
homeassistant/components/poolsense/__init__.py
homeassistant/components/poolsense/binary_sensor.py
homeassistant/components/poolsense/coordinator.py
homeassistant/components/poolsense/entity.py
homeassistant/components/poolsense/sensor.py
homeassistant/components/powerwall/__init__.py
homeassistant/components/progettihwsw/__init__.py
homeassistant/components/progettihwsw/binary_sensor.py

View file

@ -1,6 +1,7 @@
"""Common fixtures for the Poolsense tests."""
from collections.abc import Generator
from datetime import UTC, datetime
from unittest.mock import AsyncMock, patch
import pytest
@ -36,6 +37,19 @@ def mock_poolsense_client() -> Generator[AsyncMock, None, None]:
):
client = mock_client.return_value
client.test_poolsense_credentials.return_value = True
client.get_poolsense_data.return_value = {
"Chlorine": 20,
"pH": 5,
"Water Temp": 6,
"Battery": 80,
"Last Seen": datetime(2021, 1, 1, 0, 0, 0, tzinfo=UTC),
"Chlorine High": 30,
"Chlorine Low": 20,
"pH High": 7,
"pH Low": 4,
"pH Status": "red",
"Chlorine Status": "red",
}
yield client

View file

@ -0,0 +1,97 @@
# serializer version: 1
# name: test_all_entities[binary_sensor.test_test_com_chlorine_status-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'binary_sensor',
'entity_category': None,
'entity_id': 'binary_sensor.test_test_com_chlorine_status',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <BinarySensorDeviceClass.PROBLEM: 'problem'>,
'original_icon': None,
'original_name': 'Chlorine status',
'platform': 'poolsense',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'chlorine_status',
'unique_id': 'test@test.com-Chlorine Status',
'unit_of_measurement': None,
})
# ---
# name: test_all_entities[binary_sensor.test_test_com_chlorine_status-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'attribution': 'PoolSense Data',
'device_class': 'problem',
'friendly_name': 'test@test.com Chlorine status',
}),
'context': <ANY>,
'entity_id': 'binary_sensor.test_test_com_chlorine_status',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': 'on',
})
# ---
# name: test_all_entities[binary_sensor.test_test_com_ph_status-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'binary_sensor',
'entity_category': None,
'entity_id': 'binary_sensor.test_test_com_ph_status',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <BinarySensorDeviceClass.PROBLEM: 'problem'>,
'original_icon': None,
'original_name': 'pH status',
'platform': 'poolsense',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'ph_status',
'unique_id': 'test@test.com-pH Status',
'unit_of_measurement': None,
})
# ---
# name: test_all_entities[binary_sensor.test_test_com_ph_status-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'attribution': 'PoolSense Data',
'device_class': 'problem',
'friendly_name': 'test@test.com pH status',
}),
'context': <ANY>,
'entity_id': 'binary_sensor.test_test_com_ph_status',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': 'on',
})
# ---

View file

@ -0,0 +1,433 @@
# serializer version: 1
# name: test_all_entities[sensor.test_test_com_battery-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.test_test_com_battery',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <SensorDeviceClass.BATTERY: 'battery'>,
'original_icon': None,
'original_name': 'Battery',
'platform': 'poolsense',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': None,
'unique_id': 'test@test.com-Battery',
'unit_of_measurement': '%',
})
# ---
# name: test_all_entities[sensor.test_test_com_battery-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'attribution': 'PoolSense Data',
'device_class': 'battery',
'friendly_name': 'test@test.com Battery',
'unit_of_measurement': '%',
}),
'context': <ANY>,
'entity_id': 'sensor.test_test_com_battery',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '80',
})
# ---
# name: test_all_entities[sensor.test_test_com_chlorine-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.test_test_com_chlorine',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': None,
'original_icon': None,
'original_name': 'Chlorine',
'platform': 'poolsense',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'chlorine',
'unique_id': 'test@test.com-Chlorine',
'unit_of_measurement': <UnitOfElectricPotential.MILLIVOLT: 'mV'>,
})
# ---
# name: test_all_entities[sensor.test_test_com_chlorine-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'attribution': 'PoolSense Data',
'friendly_name': 'test@test.com Chlorine',
'unit_of_measurement': <UnitOfElectricPotential.MILLIVOLT: 'mV'>,
}),
'context': <ANY>,
'entity_id': 'sensor.test_test_com_chlorine',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '20',
})
# ---
# name: test_all_entities[sensor.test_test_com_chlorine_high-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.test_test_com_chlorine_high',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': None,
'original_icon': None,
'original_name': 'Chlorine high',
'platform': 'poolsense',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'chlorine_high',
'unique_id': 'test@test.com-Chlorine High',
'unit_of_measurement': <UnitOfElectricPotential.MILLIVOLT: 'mV'>,
})
# ---
# name: test_all_entities[sensor.test_test_com_chlorine_high-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'attribution': 'PoolSense Data',
'friendly_name': 'test@test.com Chlorine high',
'unit_of_measurement': <UnitOfElectricPotential.MILLIVOLT: 'mV'>,
}),
'context': <ANY>,
'entity_id': 'sensor.test_test_com_chlorine_high',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '30',
})
# ---
# name: test_all_entities[sensor.test_test_com_chlorine_low-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.test_test_com_chlorine_low',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': None,
'original_icon': None,
'original_name': 'Chlorine low',
'platform': 'poolsense',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'chlorine_low',
'unique_id': 'test@test.com-Chlorine Low',
'unit_of_measurement': <UnitOfElectricPotential.MILLIVOLT: 'mV'>,
})
# ---
# name: test_all_entities[sensor.test_test_com_chlorine_low-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'attribution': 'PoolSense Data',
'friendly_name': 'test@test.com Chlorine low',
'unit_of_measurement': <UnitOfElectricPotential.MILLIVOLT: 'mV'>,
}),
'context': <ANY>,
'entity_id': 'sensor.test_test_com_chlorine_low',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '20',
})
# ---
# name: test_all_entities[sensor.test_test_com_last_seen-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.test_test_com_last_seen',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <SensorDeviceClass.TIMESTAMP: 'timestamp'>,
'original_icon': None,
'original_name': 'Last seen',
'platform': 'poolsense',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'last_seen',
'unique_id': 'test@test.com-Last Seen',
'unit_of_measurement': None,
})
# ---
# name: test_all_entities[sensor.test_test_com_last_seen-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'attribution': 'PoolSense Data',
'device_class': 'timestamp',
'friendly_name': 'test@test.com Last seen',
}),
'context': <ANY>,
'entity_id': 'sensor.test_test_com_last_seen',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '2021-01-01T00:00:00+00:00',
})
# ---
# name: test_all_entities[sensor.test_test_com_ph-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.test_test_com_ph',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <SensorDeviceClass.PH: 'ph'>,
'original_icon': None,
'original_name': 'pH',
'platform': 'poolsense',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': None,
'unique_id': 'test@test.com-pH',
'unit_of_measurement': None,
})
# ---
# name: test_all_entities[sensor.test_test_com_ph-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'attribution': 'PoolSense Data',
'device_class': 'ph',
'friendly_name': 'test@test.com pH',
}),
'context': <ANY>,
'entity_id': 'sensor.test_test_com_ph',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '5',
})
# ---
# name: test_all_entities[sensor.test_test_com_ph_high-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.test_test_com_ph_high',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': None,
'original_icon': None,
'original_name': 'pH high',
'platform': 'poolsense',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'ph_high',
'unique_id': 'test@test.com-pH High',
'unit_of_measurement': None,
})
# ---
# name: test_all_entities[sensor.test_test_com_ph_high-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'attribution': 'PoolSense Data',
'friendly_name': 'test@test.com pH high',
}),
'context': <ANY>,
'entity_id': 'sensor.test_test_com_ph_high',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '7',
})
# ---
# name: test_all_entities[sensor.test_test_com_ph_low-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.test_test_com_ph_low',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': None,
'original_icon': None,
'original_name': 'pH low',
'platform': 'poolsense',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'ph_low',
'unique_id': 'test@test.com-pH Low',
'unit_of_measurement': None,
})
# ---
# name: test_all_entities[sensor.test_test_com_ph_low-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'attribution': 'PoolSense Data',
'friendly_name': 'test@test.com pH low',
}),
'context': <ANY>,
'entity_id': 'sensor.test_test_com_ph_low',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '4',
})
# ---
# name: test_all_entities[sensor.test_test_com_temperature-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.test_test_com_temperature',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <SensorDeviceClass.TEMPERATURE: 'temperature'>,
'original_icon': None,
'original_name': 'Temperature',
'platform': 'poolsense',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'water_temp',
'unique_id': 'test@test.com-Water Temp',
'unit_of_measurement': <UnitOfTemperature.CELSIUS: '°C'>,
})
# ---
# name: test_all_entities[sensor.test_test_com_temperature-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'attribution': 'PoolSense Data',
'device_class': 'temperature',
'friendly_name': 'test@test.com Temperature',
'unit_of_measurement': <UnitOfTemperature.CELSIUS: '°C'>,
}),
'context': <ANY>,
'entity_id': 'sensor.test_test_com_temperature',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '6',
})
# ---

View file

@ -0,0 +1,31 @@
"""Test the PoolSense binary sensor module."""
from unittest.mock import AsyncMock, patch
from syrupy import SnapshotAssertion
from homeassistant.const import Platform
from homeassistant.core import HomeAssistant
from homeassistant.helpers import entity_registry as er
from . import setup_integration
from tests.common import MockConfigEntry, snapshot_platform
async def test_all_entities(
hass: HomeAssistant,
snapshot: SnapshotAssertion,
mock_poolsense_client: AsyncMock,
mock_config_entry: MockConfigEntry,
entity_registry: er.EntityRegistry,
) -> None:
"""Test all entities."""
with patch(
"homeassistant.components.poolsense.PLATFORMS",
[Platform.BINARY_SENSOR],
):
await setup_integration(hass, mock_config_entry)
await snapshot_platform(
hass, entity_registry, snapshot, mock_config_entry.entry_id
)

View file

@ -0,0 +1,31 @@
"""Test the PoolSense sensor module."""
from unittest.mock import AsyncMock, patch
from syrupy import SnapshotAssertion
from homeassistant.const import Platform
from homeassistant.core import HomeAssistant
from homeassistant.helpers import entity_registry as er
from . import setup_integration
from tests.common import MockConfigEntry, snapshot_platform
async def test_all_entities(
hass: HomeAssistant,
snapshot: SnapshotAssertion,
mock_poolsense_client: AsyncMock,
mock_config_entry: MockConfigEntry,
entity_registry: er.EntityRegistry,
) -> None:
"""Test all entities."""
with patch(
"homeassistant.components.poolsense.PLATFORMS",
[Platform.SENSOR],
):
await setup_integration(hass, mock_config_entry)
await snapshot_platform(
hass, entity_registry, snapshot, mock_config_entry.entry_id
)