Remove weird tests (#12936)

* Remove mediaroom test
* Fix meraki test doing mac lookups
* Fix flaky unknown device config
* Move more device tracker I/O testing into memory
This commit is contained in:
Paulus Schoutsen 2018-03-06 11:53:02 -08:00 committed by Johann Kellerman
parent 9086119082
commit 36b9c0a946
4 changed files with 93 additions and 115 deletions

View file

@ -10,7 +10,7 @@ import os
from homeassistant.components import zone from homeassistant.components import zone
from homeassistant.core import callback, State from homeassistant.core import callback, State
from homeassistant.setup import setup_component from homeassistant.setup import setup_component, async_setup_component
from homeassistant.helpers import discovery from homeassistant.helpers import discovery
from homeassistant.loader import get_component from homeassistant.loader import get_component
from homeassistant.util.async import run_coroutine_threadsafe from homeassistant.util.async import run_coroutine_threadsafe
@ -152,26 +152,6 @@ class TestComponentsDeviceTracker(unittest.TestCase):
assert setup_component(self.hass, device_tracker.DOMAIN, assert setup_component(self.hass, device_tracker.DOMAIN,
TEST_PLATFORM) TEST_PLATFORM)
# pylint: disable=invalid-name
def test_adding_unknown_device_to_config(self):
"""Test the adding of unknown devices to configuration file."""
scanner = get_component('device_tracker.test').SCANNER
scanner.reset()
scanner.come_home('DEV1')
with assert_setup_component(1, device_tracker.DOMAIN):
assert setup_component(self.hass, device_tracker.DOMAIN, {
device_tracker.DOMAIN: {CONF_PLATFORM: 'test'}})
# wait for async calls (macvendor) to finish
self.hass.block_till_done()
config = device_tracker.load_config(self.yaml_devices, self.hass,
timedelta(seconds=0))
assert len(config) == 1
assert config[0].dev_id == 'dev1'
assert config[0].track
def test_gravatar(self): def test_gravatar(self):
"""Test the Gravatar generation.""" """Test the Gravatar generation."""
dev_id = 'test' dev_id = 'test'
@ -646,61 +626,6 @@ class TestComponentsDeviceTracker(unittest.TestCase):
assert len(config) == 4 assert len(config) == 4
def test_config_failure(self):
"""Test that the device tracker see failures."""
with assert_setup_component(0, device_tracker.DOMAIN):
setup_component(self.hass, device_tracker.DOMAIN,
{device_tracker.DOMAIN: {
device_tracker.CONF_CONSIDER_HOME: -1}})
def test_picture_and_icon_on_see_discovery(self):
"""Test that picture and icon are set in initial see."""
tracker = device_tracker.DeviceTracker(
self.hass, timedelta(seconds=60), False, {}, [])
tracker.see(dev_id=11, picture='pic_url', icon='mdi:icon')
self.hass.block_till_done()
config = device_tracker.load_config(self.yaml_devices, self.hass,
timedelta(seconds=0))
assert len(config) == 1
assert config[0].icon == 'mdi:icon'
assert config[0].entity_picture == 'pic_url'
def test_default_hide_if_away_is_used(self):
"""Test that default track_new is used."""
tracker = device_tracker.DeviceTracker(
self.hass, timedelta(seconds=60), False,
{device_tracker.CONF_AWAY_HIDE: True}, [])
tracker.see(dev_id=12)
self.hass.block_till_done()
config = device_tracker.load_config(self.yaml_devices, self.hass,
timedelta(seconds=0))
assert len(config) == 1
self.assertTrue(config[0].hidden)
def test_backward_compatibility_for_track_new(self):
"""Test backward compatibility for track new."""
tracker = device_tracker.DeviceTracker(
self.hass, timedelta(seconds=60), False,
{device_tracker.CONF_TRACK_NEW: True}, [])
tracker.see(dev_id=13)
self.hass.block_till_done()
config = device_tracker.load_config(self.yaml_devices, self.hass,
timedelta(seconds=0))
assert len(config) == 1
self.assertFalse(config[0].track)
def test_old_style_track_new_is_skipped(self):
"""Test old style config is skipped."""
tracker = device_tracker.DeviceTracker(
self.hass, timedelta(seconds=60), None,
{device_tracker.CONF_TRACK_NEW: False}, [])
tracker.see(dev_id=14)
self.hass.block_till_done()
config = device_tracker.load_config(self.yaml_devices, self.hass,
timedelta(seconds=0))
assert len(config) == 1
self.assertFalse(config[0].track)
@asyncio.coroutine @asyncio.coroutine
def test_async_added_to_hass(hass): def test_async_added_to_hass(hass):
@ -742,3 +667,66 @@ def test_bad_platform(hass):
} }
with assert_setup_component(0, device_tracker.DOMAIN): with assert_setup_component(0, device_tracker.DOMAIN):
assert (yield from device_tracker.async_setup(hass, config)) assert (yield from device_tracker.async_setup(hass, config))
async def test_adding_unknown_device_to_config(mock_device_tracker_conf, hass):
"""Test the adding of unknown devices to configuration file."""
scanner = get_component('device_tracker.test').SCANNER
scanner.reset()
scanner.come_home('DEV1')
await async_setup_component(hass, device_tracker.DOMAIN, {
device_tracker.DOMAIN: {CONF_PLATFORM: 'test'}})
await hass.async_block_till_done()
assert len(mock_device_tracker_conf) == 1
device = mock_device_tracker_conf[0]
assert device.dev_id == 'dev1'
assert device.track
async def test_picture_and_icon_on_see_discovery(mock_device_tracker_conf,
hass):
"""Test that picture and icon are set in initial see."""
tracker = device_tracker.DeviceTracker(
hass, timedelta(seconds=60), False, {}, [])
await tracker.async_see(dev_id=11, picture='pic_url', icon='mdi:icon')
await hass.async_block_till_done()
assert len(mock_device_tracker_conf) == 1
assert mock_device_tracker_conf[0].icon == 'mdi:icon'
assert mock_device_tracker_conf[0].entity_picture == 'pic_url'
async def test_default_hide_if_away_is_used(mock_device_tracker_conf, hass):
"""Test that default track_new is used."""
tracker = device_tracker.DeviceTracker(
hass, timedelta(seconds=60), False,
{device_tracker.CONF_AWAY_HIDE: True}, [])
await tracker.async_see(dev_id=12)
await hass.async_block_till_done()
assert len(mock_device_tracker_conf) == 1
assert mock_device_tracker_conf[0].away_hide
async def test_backward_compatibility_for_track_new(mock_device_tracker_conf,
hass):
"""Test backward compatibility for track new."""
tracker = device_tracker.DeviceTracker(
hass, timedelta(seconds=60), False,
{device_tracker.CONF_TRACK_NEW: True}, [])
await tracker.async_see(dev_id=13)
await hass.async_block_till_done()
assert len(mock_device_tracker_conf) == 1
assert mock_device_tracker_conf[0].track is False
async def test_old_style_track_new_is_skipped(mock_device_tracker_conf, hass):
"""Test old style config is skipped."""
tracker = device_tracker.DeviceTracker(
hass, timedelta(seconds=60), None,
{device_tracker.CONF_TRACK_NEW: False}, [])
await tracker.async_see(dev_id=14)
await hass.async_block_till_done()
assert len(mock_device_tracker_conf) == 1
assert mock_device_tracker_conf[0].track is False

View file

@ -1,8 +1,9 @@
"""The tests the for Meraki device tracker.""" """The tests the for Meraki device tracker."""
import asyncio import asyncio
import json import json
from unittest.mock import patch
import pytest import pytest
from homeassistant.components.device_tracker.meraki import ( from homeassistant.components.device_tracker.meraki import (
CONF_VALIDATOR, CONF_SECRET) CONF_VALIDATOR, CONF_SECRET)
from homeassistant.setup import async_setup_component from homeassistant.setup import async_setup_component
@ -24,12 +25,11 @@ def meraki_client(loop, hass, test_client):
} }
})) }))
with patch('homeassistant.components.device_tracker.update_config'): yield loop.run_until_complete(test_client(hass.http.app))
yield loop.run_until_complete(test_client(hass.http.app))
@asyncio.coroutine @asyncio.coroutine
def test_invalid_or_missing_data(meraki_client): def test_invalid_or_missing_data(mock_device_tracker_conf, meraki_client):
"""Test validator with invalid or missing data.""" """Test validator with invalid or missing data."""
req = yield from meraki_client.get(URL) req = yield from meraki_client.get(URL)
text = yield from req.text() text = yield from req.text()
@ -87,7 +87,7 @@ def test_invalid_or_missing_data(meraki_client):
@asyncio.coroutine @asyncio.coroutine
def test_data_will_be_saved(hass, meraki_client): def test_data_will_be_saved(mock_device_tracker_conf, hass, meraki_client):
"""Test with valid data.""" """Test with valid data."""
data = { data = {
"version": "2.0", "version": "2.0",
@ -130,6 +130,7 @@ def test_data_will_be_saved(hass, meraki_client):
} }
req = yield from meraki_client.post(URL, data=json.dumps(data)) req = yield from meraki_client.post(URL, data=json.dumps(data))
assert req.status == 200 assert req.status == 200
yield from hass.async_block_till_done()
state_name = hass.states.get('{}.{}'.format('device_tracker', state_name = hass.states.get('{}.{}'.format('device_tracker',
'0026abb8a9a4')).state '0026abb8a9a4')).state
assert 'home' == state_name assert 'home' == state_name

View file

@ -1,32 +0,0 @@
"""The tests for the mediaroom media_player."""
import unittest
from homeassistant.setup import setup_component
import homeassistant.components.media_player as media_player
from tests.common import (
assert_setup_component, get_test_home_assistant)
class TestMediaroom(unittest.TestCase):
"""Tests the Mediaroom Component."""
def setUp(self):
"""Initialize values for this test case class."""
self.hass = get_test_home_assistant()
def tearDown(self): # pylint: disable=invalid-name
"""Stop everything that we started."""
self.hass.stop()
def test_mediaroom_config(self):
"""Test set up the platform with basic configuration."""
config = {
media_player.DOMAIN: {
'platform': 'mediaroom',
'name': 'Living Room'
}
}
with assert_setup_component(1, media_player.DOMAIN) as result_config:
assert setup_component(self.hass, media_player.DOMAIN, config)
assert result_config[media_player.DOMAIN]

View file

@ -11,8 +11,8 @@ import requests_mock as _requests_mock
from homeassistant import util from homeassistant import util
from homeassistant.util import location from homeassistant.util import location
from tests.common import async_test_home_assistant, INSTANCES, \ from tests.common import (
async_mock_mqtt_component async_test_home_assistant, INSTANCES, async_mock_mqtt_component, mock_coro)
from tests.test_util.aiohttp import mock_aiohttp_client from tests.test_util.aiohttp import mock_aiohttp_client
from tests.mock.zwave import MockNetwork, MockOption from tests.mock.zwave import MockNetwork, MockOption
@ -106,3 +106,24 @@ def mock_openzwave():
'openzwave.group': base_mock.group, 'openzwave.group': base_mock.group,
}): }):
yield base_mock yield base_mock
@pytest.fixture
def mock_device_tracker_conf():
"""Prevent device tracker from reading/writing data."""
devices = []
async def mock_update_config(path, id, entity):
devices.append(entity)
with patch(
'homeassistant.components.device_tracker'
'.DeviceTracker.async_update_config',
side_effect=mock_update_config
), patch(
'homeassistant.components.device_tracker.async_load_config',
side_effect=lambda *args: mock_coro(devices)
), patch('homeassistant.components.device_tracker'
'.Device.set_vendor_for_mac'):
yield devices