Do not call update() in constructor (#8881)
This commit is contained in:
parent
62e86270e6
commit
57f3bed465
3 changed files with 20 additions and 19 deletions
|
@ -72,7 +72,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
add_devices([RestBinarySensor(
|
add_devices([RestBinarySensor(
|
||||||
hass, rest, name, device_class, value_template)])
|
hass, rest, name, device_class, value_template)], True)
|
||||||
|
|
||||||
|
|
||||||
class RestBinarySensor(BinarySensorDevice):
|
class RestBinarySensor(BinarySensorDevice):
|
||||||
|
@ -87,7 +87,6 @@ class RestBinarySensor(BinarySensorDevice):
|
||||||
self._state = False
|
self._state = False
|
||||||
self._previous_data = None
|
self._previous_data = None
|
||||||
self._value_template = value_template
|
self._value_template = value_template
|
||||||
self.update()
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def name(self):
|
def name(self):
|
||||||
|
|
|
@ -25,12 +25,14 @@ DEFAULT_METHOD = 'GET'
|
||||||
DEFAULT_NAME = 'REST Sensor'
|
DEFAULT_NAME = 'REST Sensor'
|
||||||
DEFAULT_VERIFY_SSL = True
|
DEFAULT_VERIFY_SSL = True
|
||||||
|
|
||||||
|
METHODS = ['POST', 'GET']
|
||||||
|
|
||||||
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
||||||
vol.Required(CONF_RESOURCE): cv.url,
|
vol.Required(CONF_RESOURCE): cv.url,
|
||||||
vol.Optional(CONF_AUTHENTICATION):
|
vol.Optional(CONF_AUTHENTICATION):
|
||||||
vol.In([HTTP_BASIC_AUTHENTICATION, HTTP_DIGEST_AUTHENTICATION]),
|
vol.In([HTTP_BASIC_AUTHENTICATION, HTTP_DIGEST_AUTHENTICATION]),
|
||||||
vol.Optional(CONF_HEADERS): {cv.string: cv.string},
|
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_NAME, default=DEFAULT_NAME): cv.string,
|
||||||
vol.Optional(CONF_PASSWORD): cv.string,
|
vol.Optional(CONF_PASSWORD): cv.string,
|
||||||
vol.Optional(CONF_PAYLOAD): 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")
|
_LOGGER.error("Unable to fetch REST data")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
add_devices([RestSensor(hass, rest, name, unit, value_template)])
|
add_devices([RestSensor(hass, rest, name, unit, value_template)], True)
|
||||||
|
|
||||||
|
|
||||||
class RestSensor(Entity):
|
class RestSensor(Entity):
|
||||||
|
@ -84,7 +86,6 @@ class RestSensor(Entity):
|
||||||
self._state = STATE_UNKNOWN
|
self._state = STATE_UNKNOWN
|
||||||
self._unit_of_measurement = unit_of_measurement
|
self._unit_of_measurement = unit_of_measurement
|
||||||
self._value_template = value_template
|
self._value_template = value_template
|
||||||
self.update()
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def name(self):
|
def name(self):
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
"""The tests for the REST switch platform."""
|
"""The tests for the REST sensor platform."""
|
||||||
import unittest
|
import unittest
|
||||||
from unittest.mock import patch, Mock
|
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
|
from tests.common import get_test_home_assistant, assert_setup_component
|
||||||
|
|
||||||
|
|
||||||
class TestRestSwitchSetup(unittest.TestCase):
|
class TestRestSensorSetup(unittest.TestCase):
|
||||||
"""Tests for setting up the REST switch platform."""
|
"""Tests for setting up the REST sensor platform."""
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
"""Setup things to be run when tests are started."""
|
"""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 = template('{{ value_json.key }}')
|
||||||
self.value_template.hass = self.hass
|
self.value_template.hass = self.hass
|
||||||
|
|
||||||
self.sensor = rest.RestSensor(self.hass, self.rest, self.name,
|
self.sensor = rest.RestSensor(
|
||||||
self.unit_of_measurement,
|
self.hass, self.rest, self.name, self.unit_of_measurement,
|
||||||
self.value_template)
|
self.value_template)
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
|
@ -151,17 +151,18 @@ class TestRestSensor(unittest.TestCase):
|
||||||
|
|
||||||
def test_unit_of_measurement(self):
|
def test_unit_of_measurement(self):
|
||||||
"""Test the unit of measurement."""
|
"""Test the unit of measurement."""
|
||||||
self.assertEqual(self.unit_of_measurement,
|
self.assertEqual(
|
||||||
self.sensor.unit_of_measurement)
|
self.unit_of_measurement, self.sensor.unit_of_measurement)
|
||||||
|
|
||||||
def test_state(self):
|
def test_state(self):
|
||||||
"""Test the initial state."""
|
"""Test the initial state."""
|
||||||
|
self.sensor.update()
|
||||||
self.assertEqual(self.initial_state, self.sensor.state)
|
self.assertEqual(self.initial_state, self.sensor.state)
|
||||||
|
|
||||||
def test_update_when_value_is_none(self):
|
def test_update_when_value_is_none(self):
|
||||||
"""Test state gets updated to unknown when sensor returns no data."""
|
"""Test state gets updated to unknown when sensor returns no data."""
|
||||||
self.rest.update = Mock('rest.RestData.update',
|
self.rest.update = Mock(
|
||||||
side_effect=self.update_side_effect(None))
|
'rest.RestData.update', side_effect=self.update_side_effect(None))
|
||||||
self.sensor.update()
|
self.sensor.update()
|
||||||
self.assertEqual(STATE_UNKNOWN, self.sensor.state)
|
self.assertEqual(STATE_UNKNOWN, self.sensor.state)
|
||||||
|
|
||||||
|
@ -178,8 +179,8 @@ class TestRestSensor(unittest.TestCase):
|
||||||
self.rest.update = Mock('rest.RestData.update',
|
self.rest.update = Mock('rest.RestData.update',
|
||||||
side_effect=self.update_side_effect(
|
side_effect=self.update_side_effect(
|
||||||
'plain_state'))
|
'plain_state'))
|
||||||
self.sensor = rest.RestSensor(self.hass, self.rest, self.name,
|
self.sensor = rest.RestSensor(
|
||||||
self.unit_of_measurement, None)
|
self.hass, self.rest, self.name, self.unit_of_measurement, None)
|
||||||
self.sensor.update()
|
self.sensor.update()
|
||||||
self.assertEqual('plain_state', self.sensor.state)
|
self.assertEqual('plain_state', self.sensor.state)
|
||||||
|
|
||||||
|
@ -192,8 +193,8 @@ class TestRestData(unittest.TestCase):
|
||||||
self.method = "GET"
|
self.method = "GET"
|
||||||
self.resource = "http://localhost"
|
self.resource = "http://localhost"
|
||||||
self.verify_ssl = True
|
self.verify_ssl = True
|
||||||
self.rest = rest.RestData(self.method, self.resource, None, None, None,
|
self.rest = rest.RestData(
|
||||||
self.verify_ssl)
|
self.method, self.resource, None, None, None, self.verify_ssl)
|
||||||
|
|
||||||
@requests_mock.Mocker()
|
@requests_mock.Mocker()
|
||||||
def test_update(self, mock_req):
|
def test_update(self, mock_req):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue