Remove deprecated state attributes in seventeentrack (#142622)

This commit is contained in:
Joost Lekkerkerker 2025-04-14 14:40:08 +02:00 committed by GitHub
parent b3eb0301ae
commit 83c3275054
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 3 additions and 83 deletions

View File

@ -2,11 +2,8 @@
from __future__ import annotations from __future__ import annotations
from typing import Any
from homeassistant.components.sensor import SensorEntity from homeassistant.components.sensor import SensorEntity
from homeassistant.config_entries import ConfigEntry from homeassistant.config_entries import ConfigEntry
from homeassistant.const import ATTR_FRIENDLY_NAME, ATTR_LOCATION
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
@ -14,15 +11,7 @@ from homeassistant.helpers.typing import StateType
from homeassistant.helpers.update_coordinator import CoordinatorEntity from homeassistant.helpers.update_coordinator import CoordinatorEntity
from . import SeventeenTrackCoordinator from . import SeventeenTrackCoordinator
from .const import ( from .const import ATTRIBUTION, DOMAIN
ATTR_INFO_TEXT,
ATTR_PACKAGES,
ATTR_STATUS,
ATTR_TIMESTAMP,
ATTR_TRACKING_NUMBER,
ATTRIBUTION,
DOMAIN,
)
async def async_setup_entry( async def async_setup_entry(
@ -81,22 +70,3 @@ class SeventeenTrackSummarySensor(SeventeenTrackSensor):
def native_value(self) -> StateType: def native_value(self) -> StateType:
"""Return the state of the sensor.""" """Return the state of the sensor."""
return self.coordinator.data.summary[self._status]["quantity"] return self.coordinator.data.summary[self._status]["quantity"]
# This has been deprecated in 2024.8, will be removed in 2025.2
@property
def extra_state_attributes(self) -> dict[str, Any] | None:
"""Return the state attributes."""
packages = self.coordinator.data.summary[self._status]["packages"]
return {
ATTR_PACKAGES: [
{
ATTR_TRACKING_NUMBER: package.tracking_number,
ATTR_LOCATION: package.location,
ATTR_STATUS: package.status,
ATTR_TIMESTAMP: package.timestamp,
ATTR_INFO_TEXT: package.info_text,
ATTR_FRIENDLY_NAME: package.friendly_name,
}
for package in packages
]
}

View File

@ -4,20 +4,12 @@ from __future__ import annotations
from unittest.mock import AsyncMock from unittest.mock import AsyncMock
from freezegun.api import FrozenDateTimeFactory
from pyseventeentrack.errors import SeventeenTrackError from pyseventeentrack.errors import SeventeenTrackError
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.setup import async_setup_component
from . import goto_future, init_integration from . import init_integration
from .conftest import ( from .conftest import DEFAULT_SUMMARY, get_package
DEFAULT_SUMMARY,
DEFAULT_SUMMARY_LENGTH,
NEW_SUMMARY_DATA,
VALID_PLATFORM_CONFIG_FULL,
get_package,
)
from tests.common import MockConfigEntry from tests.common import MockConfigEntry
@ -78,38 +70,6 @@ async def test_package_error(
assert hass.states.get("sensor.17track_package_friendly_name_1") is None assert hass.states.get("sensor.17track_package_friendly_name_1") is None
async def test_summary_correctly_updated(
hass: HomeAssistant,
freezer: FrozenDateTimeFactory,
mock_seventeentrack: AsyncMock,
mock_config_entry: MockConfigEntry,
) -> None:
"""Ensure summary entities are not duplicated."""
package = get_package(status=30)
mock_seventeentrack.return_value.profile.packages.return_value = [package]
await init_integration(hass, mock_config_entry)
assert len(hass.states.async_entity_ids()) == DEFAULT_SUMMARY_LENGTH
state_ready_picked = hass.states.get("sensor.17track_ready_to_be_picked_up")
assert state_ready_picked is not None
assert len(state_ready_picked.attributes["packages"]) == 1
mock_seventeentrack.return_value.profile.packages.return_value = []
mock_seventeentrack.return_value.profile.summary.return_value = NEW_SUMMARY_DATA
await goto_future(hass, freezer)
assert len(hass.states.async_entity_ids()) == len(NEW_SUMMARY_DATA)
for state in hass.states.async_all():
assert state.state == "1"
state_ready_picked = hass.states.get("sensor.17track_ready_to_be_picked_up")
assert state_ready_picked is not None
assert len(state_ready_picked.attributes["packages"]) == 0
async def test_summary_error( async def test_summary_error(
hass: HomeAssistant, hass: HomeAssistant,
mock_seventeentrack: AsyncMock, mock_seventeentrack: AsyncMock,
@ -129,13 +89,3 @@ async def test_summary_error(
assert ( assert (
hass.states.get("sensor.seventeentrack_packages_ready_to_be_picked_up") is None hass.states.get("sensor.seventeentrack_packages_ready_to_be_picked_up") is None
) )
async def test_non_valid_platform_config(
hass: HomeAssistant, mock_seventeentrack: AsyncMock
) -> None:
"""Test if login fails."""
mock_seventeentrack.return_value.profile.login.return_value = False
assert await async_setup_component(hass, "sensor", VALID_PLATFORM_CONFIG_FULL)
await hass.async_block_till_done()
assert len(hass.states.async_entity_ids()) == 0