Do not call update() in constructor (#8881)

This commit is contained in:
Fabian Affolter 2017-08-08 06:52:27 +02:00 committed by Pascal Vizeli
parent 62e86270e6
commit 57f3bed465
3 changed files with 20 additions and 19 deletions

View file

@ -72,7 +72,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
return False
add_devices([RestBinarySensor(
hass, rest, name, device_class, value_template)])
hass, rest, name, device_class, value_template)], True)
class RestBinarySensor(BinarySensorDevice):
@ -87,7 +87,6 @@ class RestBinarySensor(BinarySensorDevice):
self._state = False
self._previous_data = None
self._value_template = value_template
self.update()
@property
def name(self):

View file

@ -25,12 +25,14 @@ DEFAULT_METHOD = 'GET'
DEFAULT_NAME = 'REST Sensor'
DEFAULT_VERIFY_SSL = True
METHODS = ['POST', 'GET']
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
vol.Required(CONF_RESOURCE): cv.url,
vol.Optional(CONF_AUTHENTICATION):
vol.In([HTTP_BASIC_AUTHENTICATION, HTTP_DIGEST_AUTHENTICATION]),
vol.Optional(CONF_HEADERS): {cv.string: cv.string},
vol.Optional(CONF_METHOD, default=DEFAULT_METHOD): vol.In(['POST', 'GET']),
vol.Optional(CONF_METHOD, default=DEFAULT_METHOD): vol.In(METHODS),
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
vol.Optional(CONF_PASSWORD): cv.string,
vol.Optional(CONF_PAYLOAD): cv.string,
@ -70,7 +72,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
_LOGGER.error("Unable to fetch REST data")
return False
add_devices([RestSensor(hass, rest, name, unit, value_template)])
add_devices([RestSensor(hass, rest, name, unit, value_template)], True)
class RestSensor(Entity):
@ -84,7 +86,6 @@ class RestSensor(Entity):
self._state = STATE_UNKNOWN
self._unit_of_measurement = unit_of_measurement
self._value_template = value_template
self.update()
@property
def name(self):

View file

@ -1,4 +1,4 @@
"""The tests for the REST switch platform."""
"""The tests for the REST sensor platform."""
import unittest
from unittest.mock import patch, Mock
@ -15,8 +15,8 @@ from homeassistant.helpers.config_validation import template
from tests.common import get_test_home_assistant, assert_setup_component
class TestRestSwitchSetup(unittest.TestCase):
"""Tests for setting up the REST switch platform."""
class TestRestSensorSetup(unittest.TestCase):
"""Tests for setting up the REST sensor platform."""
def setUp(self):
"""Setup things to be run when tests are started."""
@ -133,8 +133,8 @@ class TestRestSensor(unittest.TestCase):
self.value_template = template('{{ value_json.key }}')
self.value_template.hass = self.hass
self.sensor = rest.RestSensor(self.hass, self.rest, self.name,
self.unit_of_measurement,
self.sensor = rest.RestSensor(
self.hass, self.rest, self.name, self.unit_of_measurement,
self.value_template)
def tearDown(self):
@ -151,17 +151,18 @@ class TestRestSensor(unittest.TestCase):
def test_unit_of_measurement(self):
"""Test the unit of measurement."""
self.assertEqual(self.unit_of_measurement,
self.sensor.unit_of_measurement)
self.assertEqual(
self.unit_of_measurement, self.sensor.unit_of_measurement)
def test_state(self):
"""Test the initial state."""
self.sensor.update()
self.assertEqual(self.initial_state, self.sensor.state)
def test_update_when_value_is_none(self):
"""Test state gets updated to unknown when sensor returns no data."""
self.rest.update = Mock('rest.RestData.update',
side_effect=self.update_side_effect(None))
self.rest.update = Mock(
'rest.RestData.update', side_effect=self.update_side_effect(None))
self.sensor.update()
self.assertEqual(STATE_UNKNOWN, self.sensor.state)
@ -178,8 +179,8 @@ class TestRestSensor(unittest.TestCase):
self.rest.update = Mock('rest.RestData.update',
side_effect=self.update_side_effect(
'plain_state'))
self.sensor = rest.RestSensor(self.hass, self.rest, self.name,
self.unit_of_measurement, None)
self.sensor = rest.RestSensor(
self.hass, self.rest, self.name, self.unit_of_measurement, None)
self.sensor.update()
self.assertEqual('plain_state', self.sensor.state)
@ -192,8 +193,8 @@ class TestRestData(unittest.TestCase):
self.method = "GET"
self.resource = "http://localhost"
self.verify_ssl = True
self.rest = rest.RestData(self.method, self.resource, None, None, None,
self.verify_ssl)
self.rest = rest.RestData(
self.method, self.resource, None, None, None, self.verify_ssl)
@requests_mock.Mocker()
def test_update(self, mock_req):