1
0
mirror of https://github.com/home-assistant/core.git synced 2026-04-02 08:26:41 +01:00
Files
core/tests/components/iss/test_sensor.py
Italo Lombardi 0136e9c7eb ISS integration: better entity handling (#159050)
Co-authored-by: Ariel Ebersberger <ariel@ebersberger.io>
2026-03-04 17:46:48 +01:00

100 lines
3.4 KiB
Python

"""Test the ISS sensor platform."""
from unittest.mock import MagicMock
from homeassistant.components.iss.const import DEFAULT_NAME, DOMAIN
from homeassistant.const import ATTR_LATITUDE, ATTR_LONGITUDE, CONF_SHOW_ON_MAP
from homeassistant.core import HomeAssistant
from homeassistant.helpers import device_registry as dr, entity_registry as er
from tests.common import MockConfigEntry
async def test_sensor_created(
hass: HomeAssistant, init_integration: MockConfigEntry
) -> None:
"""Test sensor entity is created."""
state = hass.states.get("sensor.iss")
assert state is not None
assert state.state == "7"
async def test_sensor_attributes_show_on_map_false(
hass: HomeAssistant, init_integration: MockConfigEntry
) -> None:
"""Test sensor attributes when show_on_map is False."""
state = hass.states.get("sensor.iss")
assert state is not None
assert state.state == "7"
assert state.attributes["lat"] == "40.271698"
assert state.attributes["long"] == "15.619478"
# Should NOT have ATTR_LATITUDE/ATTR_LONGITUDE when show_on_map is False
assert ATTR_LATITUDE not in state.attributes
assert ATTR_LONGITUDE not in state.attributes
async def test_sensor_attributes_show_on_map_true(
hass: HomeAssistant, mock_config_entry: MockConfigEntry, mock_pyiss: MagicMock
) -> None:
"""Test sensor attributes when show_on_map is True."""
mock_config_entry.add_to_hass(hass)
hass.config_entries.async_update_entry(
mock_config_entry, options={CONF_SHOW_ON_MAP: True}
)
await hass.config_entries.async_setup(mock_config_entry.entry_id)
await hass.async_block_till_done()
state = hass.states.get("sensor.iss")
assert state is not None
assert state.state == "7"
# Should have ATTR_LATITUDE/ATTR_LONGITUDE when show_on_map is True
assert state.attributes[ATTR_LATITUDE] == "40.271698"
assert state.attributes[ATTR_LONGITUDE] == "15.619478"
# Should NOT have lat/long keys
assert "lat" not in state.attributes
assert "long" not in state.attributes
async def test_sensor_device_info(
hass: HomeAssistant, init_integration: MockConfigEntry
) -> None:
"""Test sensor has correct device info."""
entity_registry = er.async_get(hass)
entity = entity_registry.async_get("sensor.iss")
assert entity is not None
assert entity.unique_id == f"{init_integration.entry_id}_people"
device_registry = dr.async_get(hass)
device = device_registry.async_get(entity.device_id)
assert device is not None
assert device.name == DEFAULT_NAME
assert (DOMAIN, init_integration.entry_id) in device.identifiers
async def test_sensor_updates_with_coordinator(
hass: HomeAssistant, init_integration: MockConfigEntry, mock_pyiss: MagicMock
) -> None:
"""Test sensor updates when coordinator data changes."""
state = hass.states.get("sensor.iss")
assert state.state == "7"
# Update mock data
mock_pyiss.number_of_people_in_space.return_value = 10
mock_pyiss.current_location.return_value = {
"latitude": "50.0",
"longitude": "-100.0",
}
# Trigger coordinator refresh
coordinator = init_integration.runtime_data
await coordinator.async_refresh()
await hass.async_block_till_done()
# Check sensor updated
state = hass.states.get("sensor.iss")
assert state.state == "10"
assert state.attributes["lat"] == "50.0"
assert state.attributes["long"] == "-100.0"