mirror of
https://github.com/home-assistant/core.git
synced 2025-07-17 10:17:09 +00:00
Rewrite uk_transport tests to use pytest style (#41168)
This commit is contained in:
parent
06e9489fc7
commit
df4998d7cf
@ -1,6 +1,5 @@
|
|||||||
"""The tests for the uk_transport platform."""
|
"""The tests for the uk_transport platform."""
|
||||||
import re
|
import re
|
||||||
import unittest
|
|
||||||
|
|
||||||
import requests_mock
|
import requests_mock
|
||||||
|
|
||||||
@ -16,11 +15,11 @@ from homeassistant.components.uk_transport.sensor import (
|
|||||||
CONF_API_APP_KEY,
|
CONF_API_APP_KEY,
|
||||||
UkTransportSensor,
|
UkTransportSensor,
|
||||||
)
|
)
|
||||||
from homeassistant.setup import setup_component
|
from homeassistant.setup import async_setup_component
|
||||||
from homeassistant.util.dt import now
|
from homeassistant.util.dt import now
|
||||||
|
|
||||||
from tests.async_mock import patch
|
from tests.async_mock import patch
|
||||||
from tests.common import get_test_home_assistant, load_fixture
|
from tests.common import load_fixture
|
||||||
|
|
||||||
BUS_ATCOCODE = "340000368SHE"
|
BUS_ATCOCODE = "340000368SHE"
|
||||||
BUS_DIRECTION = "Wantage"
|
BUS_DIRECTION = "Wantage"
|
||||||
@ -28,73 +27,63 @@ TRAIN_STATION_CODE = "WIM"
|
|||||||
TRAIN_DESTINATION_NAME = "WAT"
|
TRAIN_DESTINATION_NAME = "WAT"
|
||||||
|
|
||||||
VALID_CONFIG = {
|
VALID_CONFIG = {
|
||||||
"platform": "uk_transport",
|
"sensor": {
|
||||||
CONF_API_APP_ID: "foo",
|
"platform": "uk_transport",
|
||||||
CONF_API_APP_KEY: "ebcd1234",
|
CONF_API_APP_ID: "foo",
|
||||||
"queries": [
|
CONF_API_APP_KEY: "ebcd1234",
|
||||||
{"mode": "bus", "origin": BUS_ATCOCODE, "destination": BUS_DIRECTION},
|
"queries": [
|
||||||
{
|
{"mode": "bus", "origin": BUS_ATCOCODE, "destination": BUS_DIRECTION},
|
||||||
"mode": "train",
|
{
|
||||||
"origin": TRAIN_STATION_CODE,
|
"mode": "train",
|
||||||
"destination": TRAIN_DESTINATION_NAME,
|
"origin": TRAIN_STATION_CODE,
|
||||||
},
|
"destination": TRAIN_DESTINATION_NAME,
|
||||||
],
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class TestUkTransportSensor(unittest.TestCase):
|
async def test_bus(hass):
|
||||||
"""Test the uk_transport platform."""
|
"""Test for operational uk_transport sensor with proper attributes."""
|
||||||
|
with requests_mock.Mocker() as mock_req:
|
||||||
|
uri = re.compile(UkTransportSensor.TRANSPORT_API_URL_BASE + "*")
|
||||||
|
mock_req.get(uri, text=load_fixture("uk_transport_bus.json"))
|
||||||
|
assert await async_setup_component(hass, "sensor", VALID_CONFIG)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
def setUp(self):
|
bus_state = hass.states.get("sensor.next_bus_to_wantage")
|
||||||
"""Initialize values for this testcase class."""
|
assert None is not bus_state
|
||||||
self.hass = get_test_home_assistant()
|
assert f"Next bus to {BUS_DIRECTION}" == bus_state.name
|
||||||
self.config = VALID_CONFIG
|
assert BUS_ATCOCODE == bus_state.attributes[ATTR_ATCOCODE]
|
||||||
self.addCleanup(self.hass.stop)
|
assert "Harwell Campus" == bus_state.attributes[ATTR_LOCALITY]
|
||||||
|
assert "Bus Station" == bus_state.attributes[ATTR_STOP_NAME]
|
||||||
|
assert 2 == len(bus_state.attributes.get(ATTR_NEXT_BUSES))
|
||||||
|
|
||||||
@requests_mock.Mocker()
|
direction_re = re.compile(BUS_DIRECTION)
|
||||||
def test_bus(self, mock_req):
|
for bus in bus_state.attributes.get(ATTR_NEXT_BUSES):
|
||||||
"""Test for operational uk_transport sensor with proper attributes."""
|
assert None is not bus
|
||||||
with requests_mock.Mocker() as mock_req:
|
assert None is not direction_re.search(bus["direction"])
|
||||||
uri = re.compile(UkTransportSensor.TRANSPORT_API_URL_BASE + "*")
|
|
||||||
mock_req.get(uri, text=load_fixture("uk_transport_bus.json"))
|
|
||||||
assert setup_component(self.hass, "sensor", {"sensor": self.config})
|
|
||||||
self.hass.block_till_done()
|
|
||||||
|
|
||||||
bus_state = self.hass.states.get("sensor.next_bus_to_wantage")
|
|
||||||
|
|
||||||
assert type(bus_state.state) == str
|
async def test_train(hass):
|
||||||
assert bus_state.name == f"Next bus to {BUS_DIRECTION}"
|
"""Test for operational uk_transport sensor with proper attributes."""
|
||||||
assert bus_state.attributes.get(ATTR_ATCOCODE) == BUS_ATCOCODE
|
with requests_mock.Mocker() as mock_req, patch(
|
||||||
assert bus_state.attributes.get(ATTR_LOCALITY) == "Harwell Campus"
|
"homeassistant.util.dt.now", return_value=now().replace(hour=13)
|
||||||
assert bus_state.attributes.get(ATTR_STOP_NAME) == "Bus Station"
|
):
|
||||||
assert len(bus_state.attributes.get(ATTR_NEXT_BUSES)) == 2
|
uri = re.compile(UkTransportSensor.TRANSPORT_API_URL_BASE + "*")
|
||||||
|
mock_req.get(uri, text=load_fixture("uk_transport_train.json"))
|
||||||
|
assert await async_setup_component(hass, "sensor", VALID_CONFIG)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
direction_re = re.compile(BUS_DIRECTION)
|
train_state = hass.states.get("sensor.next_train_to_WAT")
|
||||||
for bus in bus_state.attributes.get(ATTR_NEXT_BUSES):
|
assert None is not train_state
|
||||||
print(bus["direction"], direction_re.match(bus["direction"]))
|
assert f"Next train to {TRAIN_DESTINATION_NAME}" == train_state.name
|
||||||
assert direction_re.search(bus["direction"]) is not None
|
assert TRAIN_STATION_CODE == train_state.attributes[ATTR_STATION_CODE]
|
||||||
|
assert TRAIN_DESTINATION_NAME == train_state.attributes[ATTR_CALLING_AT]
|
||||||
|
assert 25 == len(train_state.attributes.get(ATTR_NEXT_TRAINS))
|
||||||
|
|
||||||
@requests_mock.Mocker()
|
assert (
|
||||||
def test_train(self, mock_req):
|
"London Waterloo"
|
||||||
"""Test for operational uk_transport sensor with proper attributes."""
|
== train_state.attributes[ATTR_NEXT_TRAINS][0]["destination_name"]
|
||||||
with requests_mock.Mocker() as mock_req, patch(
|
)
|
||||||
"homeassistant.util.dt.now", return_value=now().replace(hour=13)
|
assert "06:13" == train_state.attributes[ATTR_NEXT_TRAINS][0]["estimated"]
|
||||||
):
|
|
||||||
uri = re.compile(UkTransportSensor.TRANSPORT_API_URL_BASE + "*")
|
|
||||||
mock_req.get(uri, text=load_fixture("uk_transport_train.json"))
|
|
||||||
assert setup_component(self.hass, "sensor", {"sensor": self.config})
|
|
||||||
self.hass.block_till_done()
|
|
||||||
|
|
||||||
train_state = self.hass.states.get("sensor.next_train_to_WAT")
|
|
||||||
|
|
||||||
assert type(train_state.state) == str
|
|
||||||
assert train_state.name == f"Next train to {TRAIN_DESTINATION_NAME}"
|
|
||||||
assert train_state.attributes.get(ATTR_STATION_CODE) == TRAIN_STATION_CODE
|
|
||||||
assert train_state.attributes.get(ATTR_CALLING_AT) == TRAIN_DESTINATION_NAME
|
|
||||||
assert len(train_state.attributes.get(ATTR_NEXT_TRAINS)) == 25
|
|
||||||
|
|
||||||
assert (
|
|
||||||
train_state.attributes.get(ATTR_NEXT_TRAINS)[0]["destination_name"]
|
|
||||||
== "London Waterloo"
|
|
||||||
)
|
|
||||||
assert train_state.attributes.get(ATTR_NEXT_TRAINS)[0]["estimated"] == "06:13"
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user