Changed source priority for Person (#21479)
* Added gps accuracy to Person * Corrected GPS accuracy for Person * Added priority of sources to Person * Fixed formatting * Removed rounding of coordinates. * Added test for source priority. Changed test for rounding of coordinates. * Improved code style * Code style cleanup * Code style cleanup * Code style cleanup * Code style cleanup * Code style cleanup * Lint * Lint
This commit is contained in:
parent
070320a24a
commit
4a45510c88
2 changed files with 74 additions and 19 deletions
|
@ -4,8 +4,10 @@ from unittest.mock import Mock
|
|||
from homeassistant.components.person import (
|
||||
ATTR_SOURCE, ATTR_USER_ID, DOMAIN, PersonManager)
|
||||
from homeassistant.const import (
|
||||
ATTR_ID, ATTR_LATITUDE, ATTR_LONGITUDE, STATE_UNKNOWN,
|
||||
EVENT_HOMEASSISTANT_START)
|
||||
ATTR_ID, ATTR_LATITUDE, ATTR_LONGITUDE, ATTR_GPS_ACCURACY,
|
||||
STATE_UNKNOWN, EVENT_HOMEASSISTANT_START)
|
||||
from homeassistant.components.device_tracker import (
|
||||
ATTR_SOURCE_TYPE, SOURCE_TYPE_GPS, SOURCE_TYPE_ROUTER)
|
||||
from homeassistant.core import CoreState, State
|
||||
from homeassistant.setup import async_setup_component
|
||||
|
||||
|
@ -134,15 +136,18 @@ async def test_setup_tracker(hass, hass_admin_user):
|
|||
assert state.attributes.get(ATTR_USER_ID) == user_id
|
||||
|
||||
hass.states.async_set(
|
||||
DEVICE_TRACKER, 'not_home',
|
||||
{ATTR_LATITUDE: 10.123456, ATTR_LONGITUDE: 11.123456})
|
||||
DEVICE_TRACKER, 'not_home', {
|
||||
ATTR_LATITUDE: 10.123456,
|
||||
ATTR_LONGITUDE: 11.123456,
|
||||
ATTR_GPS_ACCURACY: 10})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
state = hass.states.get('person.tracked_person')
|
||||
assert state.state == 'not_home'
|
||||
assert state.attributes.get(ATTR_ID) == '1234'
|
||||
assert state.attributes.get(ATTR_LATITUDE) == 10.12346
|
||||
assert state.attributes.get(ATTR_LONGITUDE) == 11.12346
|
||||
assert state.attributes.get(ATTR_LATITUDE) == 10.123456
|
||||
assert state.attributes.get(ATTR_LONGITUDE) == 11.123456
|
||||
assert state.attributes.get(ATTR_GPS_ACCURACY) == 10
|
||||
assert state.attributes.get(ATTR_SOURCE) == DEVICE_TRACKER
|
||||
assert state.attributes.get(ATTR_USER_ID) == user_id
|
||||
|
||||
|
@ -166,7 +171,8 @@ async def test_setup_two_trackers(hass, hass_admin_user):
|
|||
|
||||
hass.bus.async_fire(EVENT_HOMEASSISTANT_START)
|
||||
await hass.async_block_till_done()
|
||||
hass.states.async_set(DEVICE_TRACKER, 'home')
|
||||
hass.states.async_set(
|
||||
DEVICE_TRACKER, 'home', {ATTR_SOURCE_TYPE: SOURCE_TYPE_ROUTER})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
state = hass.states.get('person.tracked_person')
|
||||
|
@ -174,22 +180,49 @@ async def test_setup_two_trackers(hass, hass_admin_user):
|
|||
assert state.attributes.get(ATTR_ID) == '1234'
|
||||
assert state.attributes.get(ATTR_LATITUDE) is None
|
||||
assert state.attributes.get(ATTR_LONGITUDE) is None
|
||||
assert state.attributes.get(ATTR_GPS_ACCURACY) is None
|
||||
assert state.attributes.get(ATTR_SOURCE) == DEVICE_TRACKER
|
||||
assert state.attributes.get(ATTR_USER_ID) == user_id
|
||||
|
||||
hass.states.async_set(
|
||||
DEVICE_TRACKER_2, 'not_home',
|
||||
{ATTR_LATITUDE: 12.123456, ATTR_LONGITUDE: 13.123456})
|
||||
DEVICE_TRACKER_2, 'not_home', {
|
||||
ATTR_LATITUDE: 12.123456,
|
||||
ATTR_LONGITUDE: 13.123456,
|
||||
ATTR_GPS_ACCURACY: 12,
|
||||
ATTR_SOURCE_TYPE: SOURCE_TYPE_GPS})
|
||||
await hass.async_block_till_done()
|
||||
hass.states.async_set(
|
||||
DEVICE_TRACKER, 'not_home', {ATTR_SOURCE_TYPE: SOURCE_TYPE_ROUTER})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
state = hass.states.get('person.tracked_person')
|
||||
assert state.state == 'not_home'
|
||||
assert state.attributes.get(ATTR_ID) == '1234'
|
||||
assert state.attributes.get(ATTR_LATITUDE) == 12.12346
|
||||
assert state.attributes.get(ATTR_LONGITUDE) == 13.12346
|
||||
assert state.attributes.get(ATTR_LATITUDE) == 12.123456
|
||||
assert state.attributes.get(ATTR_LONGITUDE) == 13.123456
|
||||
assert state.attributes.get(ATTR_GPS_ACCURACY) == 12
|
||||
assert state.attributes.get(ATTR_SOURCE) == DEVICE_TRACKER_2
|
||||
assert state.attributes.get(ATTR_USER_ID) == user_id
|
||||
|
||||
hass.states.async_set(
|
||||
DEVICE_TRACKER_2, 'zone1', {ATTR_SOURCE_TYPE: SOURCE_TYPE_GPS})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
state = hass.states.get('person.tracked_person')
|
||||
assert state.state == 'zone1'
|
||||
assert state.attributes.get(ATTR_SOURCE) == DEVICE_TRACKER_2
|
||||
|
||||
hass.states.async_set(
|
||||
DEVICE_TRACKER, 'home', {ATTR_SOURCE_TYPE: SOURCE_TYPE_ROUTER})
|
||||
await hass.async_block_till_done()
|
||||
hass.states.async_set(
|
||||
DEVICE_TRACKER_2, 'zone2', {ATTR_SOURCE_TYPE: SOURCE_TYPE_GPS})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
state = hass.states.get('person.tracked_person')
|
||||
assert state.state == 'home'
|
||||
assert state.attributes.get(ATTR_SOURCE) == DEVICE_TRACKER
|
||||
|
||||
|
||||
async def test_ignore_unavailable_states(hass, hass_admin_user):
|
||||
"""Test set up person with two device trackers, one unavailable."""
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue