From 7678d66464c9825f99f53bdd2997289ca93bf935 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 4 Mar 2020 00:43:52 -0800 Subject: [PATCH] Fix device tracker TrackerEntity defaults (#32459) --- .../components/device_tracker/config_entry.py | 9 +++++++-- .../components/geofency/device_tracker.py | 5 ----- .../components/gpslogger/device_tracker.py | 5 ----- .../components/icloud/device_tracker.py | 5 ----- .../components/locative/device_tracker.py | 5 ----- .../components/mobile_app/device_tracker.py | 5 ----- .../components/owntracks/device_tracker.py | 5 ----- .../components/tesla/device_tracker.py | 5 ----- .../components/traccar/device_tracker.py | 5 ----- .../device_tracker/test_config_entry.py | 19 +++++++++++++++++++ 10 files changed, 26 insertions(+), 42 deletions(-) create mode 100644 tests/components/device_tracker/test_config_entry.py diff --git a/homeassistant/components/device_tracker/config_entry.py b/homeassistant/components/device_tracker/config_entry.py index 059c51989fe..1be47b9b981 100644 --- a/homeassistant/components/device_tracker/config_entry.py +++ b/homeassistant/components/device_tracker/config_entry.py @@ -61,10 +61,15 @@ class BaseTrackerEntity(Entity): class TrackerEntity(BaseTrackerEntity): """Represent a tracked device.""" + @property + def should_poll(self): + """No polling for entities that have location pushed.""" + return False + @property def force_update(self): - """All updates need to be written to the state machine.""" - return True + """All updates need to be written to the state machine if we're not polling.""" + return not self.should_poll @property def location_accuracy(self): diff --git a/homeassistant/components/geofency/device_tracker.py b/homeassistant/components/geofency/device_tracker.py index 49bd70192ef..e730f108f8f 100644 --- a/homeassistant/components/geofency/device_tracker.py +++ b/homeassistant/components/geofency/device_tracker.py @@ -84,11 +84,6 @@ class GeofencyEntity(TrackerEntity, RestoreEntity): """Return the name of the device.""" return self._name - @property - def should_poll(self): - """No polling needed.""" - return False - @property def unique_id(self): """Return the unique ID.""" diff --git a/homeassistant/components/gpslogger/device_tracker.py b/homeassistant/components/gpslogger/device_tracker.py index d8afc377d40..d294b07ebc7 100644 --- a/homeassistant/components/gpslogger/device_tracker.py +++ b/homeassistant/components/gpslogger/device_tracker.py @@ -107,11 +107,6 @@ class GPSLoggerEntity(TrackerEntity, RestoreEntity): """Return the name of the device.""" return self._name - @property - def should_poll(self): - """No polling needed.""" - return False - @property def unique_id(self): """Return the unique ID.""" diff --git a/homeassistant/components/icloud/device_tracker.py b/homeassistant/components/icloud/device_tracker.py index 00f35fbee85..4248485e11b 100644 --- a/homeassistant/components/icloud/device_tracker.py +++ b/homeassistant/components/icloud/device_tracker.py @@ -107,11 +107,6 @@ class IcloudTrackerEntity(TrackerEntity): "model": self._device.device_model, } - @property - def should_poll(self) -> bool: - """No polling needed.""" - return False - async def async_added_to_hass(self): """Register state update callback.""" self._unsub_dispatcher = async_dispatcher_connect( diff --git a/homeassistant/components/locative/device_tracker.py b/homeassistant/components/locative/device_tracker.py index ef247954171..49983d44eb9 100644 --- a/homeassistant/components/locative/device_tracker.py +++ b/homeassistant/components/locative/device_tracker.py @@ -61,11 +61,6 @@ class LocativeEntity(TrackerEntity): """Return the name of the device.""" return self._name - @property - def should_poll(self): - """No polling needed.""" - return False - @property def source_type(self): """Return the source type, eg gps or router, of the device.""" diff --git a/homeassistant/components/mobile_app/device_tracker.py b/homeassistant/components/mobile_app/device_tracker.py index 480bfee512f..850d17212fd 100644 --- a/homeassistant/components/mobile_app/device_tracker.py +++ b/homeassistant/components/mobile_app/device_tracker.py @@ -100,11 +100,6 @@ class MobileAppEntity(TrackerEntity, RestoreEntity): """Return the name of the device.""" return self._entry.data[ATTR_DEVICE_NAME] - @property - def should_poll(self): - """No polling needed.""" - return False - @property def source_type(self): """Return the source type, eg gps or router, of the device.""" diff --git a/homeassistant/components/owntracks/device_tracker.py b/homeassistant/components/owntracks/device_tracker.py index ed94ef0fa14..89312f96c68 100644 --- a/homeassistant/components/owntracks/device_tracker.py +++ b/homeassistant/components/owntracks/device_tracker.py @@ -118,11 +118,6 @@ class OwnTracksEntity(TrackerEntity, RestoreEntity): """Return the name of the device.""" return self._data.get("host_name") - @property - def should_poll(self): - """No polling needed.""" - return False - @property def source_type(self): """Return the source type, eg gps or router, of the device.""" diff --git a/homeassistant/components/tesla/device_tracker.py b/homeassistant/components/tesla/device_tracker.py index f39d8055b12..08e5d58ba6e 100644 --- a/homeassistant/components/tesla/device_tracker.py +++ b/homeassistant/components/tesla/device_tracker.py @@ -68,8 +68,3 @@ class TeslaDeviceEntity(TeslaDevice, TrackerEntity): def source_type(self): """Return the source type, eg gps or router, of the device.""" return SOURCE_TYPE_GPS - - @property - def force_update(self): - """All updates do not need to be written to the state machine.""" - return False diff --git a/homeassistant/components/traccar/device_tracker.py b/homeassistant/components/traccar/device_tracker.py index 7f23d6cf31e..b6e829750e9 100644 --- a/homeassistant/components/traccar/device_tracker.py +++ b/homeassistant/components/traccar/device_tracker.py @@ -371,11 +371,6 @@ class TraccarEntity(TrackerEntity, RestoreEntity): """Return the name of the device.""" return self._name - @property - def should_poll(self): - """No polling needed.""" - return False - @property def unique_id(self): """Return the unique ID.""" diff --git a/tests/components/device_tracker/test_config_entry.py b/tests/components/device_tracker/test_config_entry.py new file mode 100644 index 00000000000..9b6a85cf8a0 --- /dev/null +++ b/tests/components/device_tracker/test_config_entry.py @@ -0,0 +1,19 @@ +"""Test Device Tracker config entry things.""" +from homeassistant.components.device_tracker import config_entry + + +def test_tracker_entity(): + """Test tracker entity.""" + + class TestEntry(config_entry.TrackerEntity): + """Mock tracker class.""" + + should_poll = False + + instance = TestEntry() + + assert instance.force_update + + instance.should_poll = True + + assert not instance.force_update