This commit is contained in:
G Johansson
2025-05-28 16:49:16 +00:00
parent 8a378f4055
commit 13361e0ea0
3 changed files with 399 additions and 2 deletions

View File

@@ -25,9 +25,9 @@ PARALLEL_UPDATES = 0
def get_percentage_values(entity: SMHISensor, key: str) -> int | None:
"""Return percentage values in correct range."""
value: int | None = entity.coordinator.current.get(key) # type: ignore[assignment]
if value and 0 <= value <= 100:
if value is not None and 0 <= value <= 100:
return value
if value:
if value is not None:
return 0
return None
@@ -136,4 +136,5 @@ class SMHISensor(SmhiWeatherBaseEntity, SensorEntity):
def update_entity_data(self) -> None:
"""Refresh the entity data."""
if self.coordinator.data.daily:
# print(self.entity_description.key, self.coordinator.current)
self._attr_native_value = self.entity_description.value_fn(self)

View File

@@ -0,0 +1,370 @@
# serializer version: 1
# name: test_setup_hass[load_platforms0][sensor.test_frozen_precipitation-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'config_subentry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.test_frozen_precipitation',
'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': 'Frozen precipitation',
'platform': 'smhi',
'previous_unique_id': None,
'suggested_object_id': None,
'supported_features': 0,
'translation_key': 'frozen_precipitation',
'unique_id': '59.32624, 17.84197-frozen_precipitation',
'unit_of_measurement': '%',
})
# ---
# name: test_setup_hass[load_platforms0][sensor.test_frozen_precipitation-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'attribution': 'Swedish weather institute (SMHI)',
'friendly_name': 'Test Frozen precipitation',
'unit_of_measurement': '%',
}),
'context': <ANY>,
'entity_id': 'sensor.test_frozen_precipitation',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '0',
})
# ---
# name: test_setup_hass[load_platforms0][sensor.test_high_cloud_coverage-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'config_subentry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.test_high_cloud_coverage',
'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': 'High cloud coverage',
'platform': 'smhi',
'previous_unique_id': None,
'suggested_object_id': None,
'supported_features': 0,
'translation_key': 'high_cloud',
'unique_id': '59.32624, 17.84197-high_cloud',
'unit_of_measurement': '%',
})
# ---
# name: test_setup_hass[load_platforms0][sensor.test_high_cloud_coverage-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'attribution': 'Swedish weather institute (SMHI)',
'friendly_name': 'Test High cloud coverage',
'unit_of_measurement': '%',
}),
'context': <ANY>,
'entity_id': 'sensor.test_high_cloud_coverage',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '88',
})
# ---
# name: test_setup_hass[load_platforms0][sensor.test_low_cloud_coverage-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'config_subentry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.test_low_cloud_coverage',
'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': 'Low cloud coverage',
'platform': 'smhi',
'previous_unique_id': None,
'suggested_object_id': None,
'supported_features': 0,
'translation_key': 'low_cloud',
'unique_id': '59.32624, 17.84197-low_cloud',
'unit_of_measurement': '%',
})
# ---
# name: test_setup_hass[load_platforms0][sensor.test_low_cloud_coverage-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'attribution': 'Swedish weather institute (SMHI)',
'friendly_name': 'Test Low cloud coverage',
'unit_of_measurement': '%',
}),
'context': <ANY>,
'entity_id': 'sensor.test_low_cloud_coverage',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '100',
})
# ---
# name: test_setup_hass[load_platforms0][sensor.test_medium_cloud_coverage-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'config_subentry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.test_medium_cloud_coverage',
'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': 'Medium cloud coverage',
'platform': 'smhi',
'previous_unique_id': None,
'suggested_object_id': None,
'supported_features': 0,
'translation_key': 'medium_cloud',
'unique_id': '59.32624, 17.84197-medium_cloud',
'unit_of_measurement': '%',
})
# ---
# name: test_setup_hass[load_platforms0][sensor.test_medium_cloud_coverage-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'attribution': 'Swedish weather institute (SMHI)',
'friendly_name': 'Test Medium cloud coverage',
'unit_of_measurement': '%',
}),
'context': <ANY>,
'entity_id': 'sensor.test_medium_cloud_coverage',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '88',
})
# ---
# name: test_setup_hass[load_platforms0][sensor.test_precipitation_category-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'options': list([
'0',
'1',
'2',
'3',
'4',
'5',
'6',
]),
}),
'config_entry_id': <ANY>,
'config_subentry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.test_precipitation_category',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <SensorDeviceClass.ENUM: 'enum'>,
'original_icon': None,
'original_name': 'Precipitation category',
'platform': 'smhi',
'previous_unique_id': None,
'suggested_object_id': None,
'supported_features': 0,
'translation_key': 'precipitation_category',
'unique_id': '59.32624, 17.84197-precipitation_category',
'unit_of_measurement': None,
})
# ---
# name: test_setup_hass[load_platforms0][sensor.test_precipitation_category-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'attribution': 'Swedish weather institute (SMHI)',
'device_class': 'enum',
'friendly_name': 'Test Precipitation category',
'options': list([
'0',
'1',
'2',
'3',
'4',
'5',
'6',
]),
}),
'context': <ANY>,
'entity_id': 'sensor.test_precipitation_category',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '0',
})
# ---
# name: test_setup_hass[load_platforms0][sensor.test_thunder_probability-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'config_subentry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.test_thunder_probability',
'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': 'Thunder probability',
'platform': 'smhi',
'previous_unique_id': None,
'suggested_object_id': None,
'supported_features': 0,
'translation_key': 'thunder',
'unique_id': '59.32624, 17.84197-thunder',
'unit_of_measurement': '%',
})
# ---
# name: test_setup_hass[load_platforms0][sensor.test_thunder_probability-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'attribution': 'Swedish weather institute (SMHI)',
'friendly_name': 'Test Thunder probability',
'unit_of_measurement': '%',
}),
'context': <ANY>,
'entity_id': 'sensor.test_thunder_probability',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '37',
})
# ---
# name: test_setup_hass[load_platforms0][sensor.test_total_cloud_coverage-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'config_subentry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.test_total_cloud_coverage',
'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': 'Total cloud coverage',
'platform': 'smhi',
'previous_unique_id': None,
'suggested_object_id': None,
'supported_features': 0,
'translation_key': 'total_cloud',
'unique_id': '59.32624, 17.84197-total_cloud',
'unit_of_measurement': '%',
})
# ---
# name: test_setup_hass[load_platforms0][sensor.test_total_cloud_coverage-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'attribution': 'Swedish weather institute (SMHI)',
'friendly_name': 'Test Total cloud coverage',
'unit_of_measurement': '%',
}),
'context': <ANY>,
'entity_id': 'sensor.test_total_cloud_coverage',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '100',
})
# ---

View File

@@ -0,0 +1,26 @@
"""Test for the smhi weather entity."""
import pytest
from syrupy.assertion import SnapshotAssertion
from homeassistant.const import Platform
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_registry import EntityRegistry
from tests.common import MockConfigEntry, snapshot_platform
@pytest.mark.usefixtures("entity_registry_enabled_by_default")
@pytest.mark.parametrize(
"load_platforms",
[[Platform.SENSOR]],
)
async def test_setup_hass(
hass: HomeAssistant,
entity_registry: EntityRegistry,
load_int: MockConfigEntry,
snapshot: SnapshotAssertion,
) -> None:
"""Test for successfully setting up the smhi sensors."""
await snapshot_platform(hass, entity_registry, snapshot, load_int.entry_id)