From 40d7fbcda45d823ff7a3f3095fa2cd5a04adade1 Mon Sep 17 00:00:00 2001 From: Martin Hjelmare <marhje52@kth.se> Date: Thu, 28 Feb 2019 23:17:53 +0100 Subject: [PATCH] Clean up gpslogger tests (#21543) --- tests/components/gpslogger/test_init.py | 59 +++++++++++++++---------- 1 file changed, 35 insertions(+), 24 deletions(-) diff --git a/tests/components/gpslogger/test_init.py b/tests/components/gpslogger/test_init.py index db1ae655c25..577da5f33e6 100644 --- a/tests/components/gpslogger/test_init.py +++ b/tests/components/gpslogger/test_init.py @@ -1,22 +1,23 @@ """The tests the for GPSLogger device tracker platform.""" -from unittest.mock import patch, Mock +from unittest.mock import Mock, patch import pytest -from homeassistant.helpers.dispatcher import DATA_DISPATCHER from homeassistant import data_entry_flow -from homeassistant.components import zone, gpslogger -from homeassistant.components.device_tracker import \ - DOMAIN as DEVICE_TRACKER_DOMAIN +from homeassistant.components import gpslogger, zone +from homeassistant.components.device_tracker import ( + DOMAIN as DEVICE_TRACKER_DOMAIN) from homeassistant.components.gpslogger import DOMAIN, TRACKER_UPDATE -from homeassistant.const import HTTP_OK, HTTP_UNPROCESSABLE_ENTITY, \ - STATE_HOME, STATE_NOT_HOME, CONF_WEBHOOK_ID +from homeassistant.const import ( + HTTP_OK, HTTP_UNPROCESSABLE_ENTITY, STATE_HOME, STATE_NOT_HOME) +from homeassistant.helpers.dispatcher import DATA_DISPATCHER from homeassistant.setup import async_setup_component -from tests.common import MockConfigEntry HOME_LATITUDE = 37.239622 HOME_LONGITUDE = -115.815811 +# pylint: disable=redefined-outer-name + @pytest.fixture(autouse=True) def mock_dev_track(mock_device_tracker_conf): @@ -158,29 +159,39 @@ async def test_enter_with_attrs(hass, gpslogger_client, webhook_id): assert req.status == HTTP_OK state = hass.states.get('{}.{}'.format(DEVICE_TRACKER_DOMAIN, data['device'])) - assert STATE_NOT_HOME == state.state - assert 10.5 == state.attributes['gps_accuracy'] - assert 10.0 == state.attributes['battery'] - assert 100.0 == state.attributes['speed'] - assert 105.32 == state.attributes['direction'] - assert 102.0 == state.attributes['altitude'] - assert 'gps' == state.attributes['provider'] - assert 'running' == state.attributes['activity'] + assert state.state == STATE_NOT_HOME + assert state.attributes['gps_accuracy'] == 10.5 + assert state.attributes['battery'] == 10.0 + assert state.attributes['speed'] == 100.0 + assert state.attributes['direction'] == 105.32 + assert state.attributes['altitude'] == 102.0 + assert state.attributes['provider'] == 'gps' + assert state.attributes['activity'] == 'running' @pytest.mark.xfail( reason='The device_tracker component does not support unloading yet.' ) -async def test_load_unload_entry(hass): +async def test_load_unload_entry(hass, gpslogger_client, webhook_id): """Test that the appropriate dispatch signals are added and removed.""" - entry = MockConfigEntry(domain=DOMAIN, data={ - CONF_WEBHOOK_ID: 'gpslogger_test' - }) + url = '/api/webhook/{}'.format(webhook_id) + data = { + 'latitude': HOME_LATITUDE, + 'longitude': HOME_LONGITUDE, + 'device': '123', + } - await gpslogger.async_setup_entry(hass, entry) + # Enter the Home + req = await gpslogger_client.post(url, data=data) await hass.async_block_till_done() - assert 1 == len(hass.data[DATA_DISPATCHER][TRACKER_UPDATE]) + assert req.status == HTTP_OK + state_name = hass.states.get('{}.{}'.format(DEVICE_TRACKER_DOMAIN, + data['device'])).state + assert STATE_HOME == state_name + assert len(hass.data[DATA_DISPATCHER][TRACKER_UPDATE]) == 1 + + entry = hass.config_entries.async_entries(DOMAIN)[0] - await gpslogger.async_unload_entry(hass, entry) + assert await gpslogger.async_unload_entry(hass, entry) await hass.async_block_till_done() - assert 0 == len(hass.data[DATA_DISPATCHER][TRACKER_UPDATE]) + assert not hass.data[DATA_DISPATCHER][TRACKER_UPDATE] -- GitLab