Fix missing duration translation for Swiss public transport integration (#136982)

pull/136995/head^2
Cyrill Raccaud 2025-01-31 12:10:44 +01:00 committed by GitHub
parent e578327054
commit e512ad7a81
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 58 additions and 53 deletions

View File

@ -10,7 +10,7 @@
"departure2": {
"default": "mdi:bus-clock"
},
"duration": {
"trip_duration": {
"default": "mdi:timeline-clock"
},
"transfers": {

View File

@ -56,8 +56,10 @@ SENSORS: tuple[SwissPublicTransportSensorEntityDescription, ...] = (
],
SwissPublicTransportSensorEntityDescription(
key="duration",
translation_key="trip_duration",
device_class=SensorDeviceClass.DURATION,
native_unit_of_measurement=UnitOfTime.SECONDS,
suggested_unit_of_measurement=UnitOfTime.HOURS,
value_fn=lambda data_connection: data_connection["duration"],
),
SwissPublicTransportSensorEntityDescription(

View File

@ -64,8 +64,8 @@
"departure2": {
"name": "Departure +2"
},
"duration": {
"name": "Duration"
"trip_duration": {
"name": "Trip duration"
},
"transfers": {
"name": "Transfers"

View File

@ -192,55 +192,6 @@
'state': '2024-01-06T17:05:00+00:00',
})
# ---
# name: test_all_entities[sensor.zurich_bern_duration-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.zurich_bern_duration',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <SensorDeviceClass.DURATION: 'duration'>,
'original_icon': None,
'original_name': 'Duration',
'platform': 'swiss_public_transport',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': None,
'unique_id': 'Zürich Bern_duration',
'unit_of_measurement': <UnitOfTime.SECONDS: 's'>,
})
# ---
# name: test_all_entities[sensor.zurich_bern_duration-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'attribution': 'Data provided by transport.opendata.ch',
'device_class': 'duration',
'friendly_name': 'Zürich Bern Duration',
'unit_of_measurement': <UnitOfTime.SECONDS: 's'>,
}),
'context': <ANY>,
'entity_id': 'sensor.zurich_bern_duration',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '10',
})
# ---
# name: test_all_entities[sensor.zurich_bern_line-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
@ -382,3 +333,55 @@
'state': '0',
})
# ---
# name: test_all_entities[sensor.zurich_bern_trip_duration-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.zurich_bern_trip_duration',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
'sensor.private': dict({
'suggested_unit_of_measurement': <UnitOfTime.HOURS: 'h'>,
}),
}),
'original_device_class': <SensorDeviceClass.DURATION: 'duration'>,
'original_icon': None,
'original_name': 'Trip duration',
'platform': 'swiss_public_transport',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'trip_duration',
'unique_id': 'Zürich Bern_duration',
'unit_of_measurement': <UnitOfTime.HOURS: 'h'>,
})
# ---
# name: test_all_entities[sensor.zurich_bern_trip_duration-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'attribution': 'Data provided by transport.opendata.ch',
'device_class': 'duration',
'friendly_name': 'Zürich Bern Trip duration',
'unit_of_measurement': <UnitOfTime.HOURS: 'h'>,
}),
'context': <ANY>,
'entity_id': 'sensor.zurich_bern_trip_duration',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '0.003',
})
# ---

View File

@ -83,7 +83,7 @@ async def test_fetching_data(
hass.states.get("sensor.zurich_bern_departure_2").state
== "2024-01-06T17:05:00+00:00"
)
assert hass.states.get("sensor.zurich_bern_duration").state == "10"
assert hass.states.get("sensor.zurich_bern_trip_duration").state == "0.003"
assert hass.states.get("sensor.zurich_bern_platform").state == "0"
assert hass.states.get("sensor.zurich_bern_transfers").state == "0"
assert hass.states.get("sensor.zurich_bern_delay").state == "0"