From 980413c57f11b40708439355f40493cff6d8c3a9 Mon Sep 17 00:00:00 2001 From: Brett Adams Date: Tue, 20 Feb 2024 06:50:20 +1000 Subject: [PATCH] Add new range sensors to Tessie (#110446) * Add new sensors * Fix tests --- homeassistant/components/tessie/sensor.py | 16 ++ homeassistant/components/tessie/strings.json | 38 ++++- .../tessie/snapshots/test_sensor.ambr | 144 ++++++++++++++++++ tests/components/tessie/test_sensor.py | 2 + 4 files changed, 192 insertions(+), 8 deletions(-) diff --git a/homeassistant/components/tessie/sensor.py b/homeassistant/components/tessie/sensor.py index 7c126754fb5..ff0c1e5cdea 100644 --- a/homeassistant/components/tessie/sensor.py +++ b/homeassistant/components/tessie/sensor.py @@ -114,6 +114,22 @@ DESCRIPTIONS: tuple[TessieSensorEntityDescription, ...] = ( device_class=SensorDeviceClass.DISTANCE, suggested_display_precision=1, ), + TessieSensorEntityDescription( + key="charge_state_est_battery_range", + state_class=SensorStateClass.MEASUREMENT, + native_unit_of_measurement=UnitOfLength.MILES, + device_class=SensorDeviceClass.DISTANCE, + suggested_display_precision=1, + entity_registry_enabled_default=False, + ), + TessieSensorEntityDescription( + key="charge_state_ideal_battery_range", + state_class=SensorStateClass.MEASUREMENT, + native_unit_of_measurement=UnitOfLength.MILES, + device_class=SensorDeviceClass.DISTANCE, + suggested_display_precision=1, + entity_registry_enabled_default=False, + ), TessieSensorEntityDescription( key="drive_state_speed", state_class=SensorStateClass.MEASUREMENT, diff --git a/homeassistant/components/tessie/strings.json b/homeassistant/components/tessie/strings.json index f5900095836..8e634644895 100644 --- a/homeassistant/components/tessie/strings.json +++ b/homeassistant/components/tessie/strings.json @@ -102,6 +102,12 @@ "charge_state_battery_range": { "name": "Battery range" }, + "charge_state_est_battery_range": { + "name": "Battery range estimate" + }, + "charge_state_ideal_battery_range": { + "name": "Battery range ideal" + }, "charge_state_minutes_to_full_charge": { "name": "Time to full charge" }, @@ -170,8 +176,12 @@ "charge_state_charge_port_door_open": { "name": "Charge port door" }, - "vehicle_state_ft": { "name": "Frunk" }, - "vehicle_state_rt": { "name": "Trunk" } + "vehicle_state_ft": { + "name": "Frunk" + }, + "vehicle_state_rt": { + "name": "Trunk" + } }, "select": { "climate_state_seat_heater_left": { @@ -325,12 +335,24 @@ } }, "button": { - "wake": { "name": "Wake" }, - "flash_lights": { "name": "Flash lights" }, - "honk": { "name": "Honk horn" }, - "trigger_homelink": { "name": "Homelink" }, - "enable_keyless_driving": { "name": "Keyless driving" }, - "boombox": { "name": "Play fart" } + "wake": { + "name": "Wake" + }, + "flash_lights": { + "name": "Flash lights" + }, + "honk": { + "name": "Honk horn" + }, + "trigger_homelink": { + "name": "Homelink" + }, + "enable_keyless_driving": { + "name": "Keyless driving" + }, + "boombox": { + "name": "Play fart" + } }, "switch": { "charge_state_charge_enable_request": { diff --git a/tests/components/tessie/snapshots/test_sensor.ambr b/tests/components/tessie/snapshots/test_sensor.ambr index bc09e491727..df2351cafeb 100644 --- a/tests/components/tessie/snapshots/test_sensor.ambr +++ b/tests/components/tessie/snapshots/test_sensor.ambr @@ -105,6 +105,114 @@ 'state': '424.35182592', }) # --- +# name: test_sensors[sensor.test_battery_range_estimate-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'state_class': , + }), + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.test_battery_range_estimate', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'name': None, + 'options': dict({ + 'sensor': dict({ + 'suggested_display_precision': 1, + }), + 'sensor.private': dict({ + 'suggested_unit_of_measurement': , + }), + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Battery range estimate', + 'platform': 'tessie', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'charge_state_est_battery_range', + 'unique_id': 'VINVINVIN-charge_state_est_battery_range', + 'unit_of_measurement': , + }) +# --- +# name: test_sensors[sensor.test_battery_range_estimate-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'distance', + 'friendly_name': 'Test Battery range estimate', + 'state_class': , + 'unit_of_measurement': , + }), + 'context': , + 'entity_id': 'sensor.test_battery_range_estimate', + 'last_changed': , + 'last_updated': , + 'state': '522.60227712', + }) +# --- +# name: test_sensors[sensor.test_battery_range_ideal-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'state_class': , + }), + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.test_battery_range_ideal', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'name': None, + 'options': dict({ + 'sensor': dict({ + 'suggested_display_precision': 1, + }), + 'sensor.private': dict({ + 'suggested_unit_of_measurement': , + }), + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Battery range ideal', + 'platform': 'tessie', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'charge_state_ideal_battery_range', + 'unique_id': 'VINVINVIN-charge_state_ideal_battery_range', + 'unit_of_measurement': , + }) +# --- +# name: test_sensors[sensor.test_battery_range_ideal-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'distance', + 'friendly_name': 'Test Battery range ideal', + 'state_class': , + 'unit_of_measurement': , + }), + 'context': , + 'entity_id': 'sensor.test_battery_range_ideal', + 'last_changed': , + 'last_updated': , + 'state': '424.35182592', + }) +# --- # name: test_sensors[sensor.test_charge_energy_added-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ @@ -470,6 +578,42 @@ 'state': 'Giga Texas', }) # --- +# name: test_sensors[sensor.test_distance-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'state_class': , + }), + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': , + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.test_distance', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'name': None, + 'options': dict({ + 'sensor.private': dict({ + 'suggested_unit_of_measurement': , + }), + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Distance', + 'platform': 'tessie', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'charge_state_est_battery_range', + 'unique_id': 'VINVINVIN-charge_state_est_battery_range', + 'unit_of_measurement': , + }) +# --- # name: test_sensors[sensor.test_distance_to_arrival-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ diff --git a/tests/components/tessie/test_sensor.py b/tests/components/tessie/test_sensor.py index 090f9df0ca5..efe34df7226 100644 --- a/tests/components/tessie/test_sensor.py +++ b/tests/components/tessie/test_sensor.py @@ -1,5 +1,6 @@ """Test the Tessie sensor platform.""" from freezegun.api import FrozenDateTimeFactory +import pytest from syrupy import SnapshotAssertion from homeassistant.const import Platform @@ -9,6 +10,7 @@ from homeassistant.helpers import entity_registry as er from .common import assert_entities, setup_platform +@pytest.mark.usefixtures("entity_registry_enabled_by_default") async def test_sensors( hass: HomeAssistant, snapshot: SnapshotAssertion,