* Convert core tests
* Convert component tests to use pytest assert
* Lint 🤷♂️
* Fix test
* Fix 3 typos in docs
91 lines
2.9 KiB
Python
91 lines
2.9 KiB
Python
"""The tests for the Aurora sensor platform."""
|
|
import re
|
|
import unittest
|
|
|
|
import requests_mock
|
|
|
|
from homeassistant.components.binary_sensor import aurora
|
|
from tests.common import load_fixture, get_test_home_assistant
|
|
|
|
|
|
class TestAuroraSensorSetUp(unittest.TestCase):
|
|
"""Test the aurora platform."""
|
|
|
|
def setUp(self):
|
|
"""Initialize values for this testcase class."""
|
|
self.hass = get_test_home_assistant()
|
|
self.lat = 37.8267
|
|
self.lon = -122.423
|
|
self.hass.config.latitude = self.lat
|
|
self.hass.config.longitude = self.lon
|
|
self.entities = []
|
|
|
|
def tearDown(self): # pylint: disable=invalid-name
|
|
"""Stop everything that was started."""
|
|
self.hass.stop()
|
|
|
|
@requests_mock.Mocker()
|
|
def test_setup_and_initial_state(self, mock_req):
|
|
"""Test that the component is created and initialized as expected."""
|
|
uri = re.compile(
|
|
r"http://services\.swpc\.noaa\.gov/text/aurora-nowcast-map\.txt"
|
|
)
|
|
mock_req.get(uri, text=load_fixture('aurora.txt'))
|
|
|
|
entities = []
|
|
|
|
def mock_add_entities(new_entities, update_before_add=False):
|
|
"""Mock add entities."""
|
|
if update_before_add:
|
|
for entity in new_entities:
|
|
entity.update()
|
|
|
|
for entity in new_entities:
|
|
entities.append(entity)
|
|
|
|
config = {
|
|
"name": "Test",
|
|
"forecast_threshold": 75
|
|
}
|
|
aurora.setup_platform(self.hass, config, mock_add_entities)
|
|
|
|
aurora_component = entities[0]
|
|
assert len(entities) == 1
|
|
assert aurora_component.name == "Test"
|
|
assert \
|
|
aurora_component.device_state_attributes["visibility_level"] == '0'
|
|
assert aurora_component.device_state_attributes["message"] == \
|
|
"nothing's out"
|
|
assert not aurora_component.is_on
|
|
|
|
@requests_mock.Mocker()
|
|
def test_custom_threshold_works(self, mock_req):
|
|
"""Test that the config can take a custom forecast threshold."""
|
|
uri = re.compile(
|
|
r"http://services\.swpc\.noaa\.gov/text/aurora-nowcast-map\.txt"
|
|
)
|
|
mock_req.get(uri, text=load_fixture('aurora.txt'))
|
|
|
|
entities = []
|
|
|
|
def mock_add_entities(new_entities, update_before_add=False):
|
|
"""Mock add entities."""
|
|
if update_before_add:
|
|
for entity in new_entities:
|
|
entity.update()
|
|
|
|
for entity in new_entities:
|
|
entities.append(entity)
|
|
|
|
config = {
|
|
"name": "Test",
|
|
"forecast_threshold": 1
|
|
}
|
|
self.hass.config.longitude = 5
|
|
self.hass.config.latitude = 5
|
|
|
|
aurora.setup_platform(self.hass, config, mock_add_entities)
|
|
|
|
aurora_component = entities[0]
|
|
assert aurora_component.aurora_data.visibility_level == '5'
|
|
assert aurora_component.is_on
|