core/tests/components/github/test_sensor.py

46 lines
1.4 KiB
Python
Raw Normal View History

"""Test GitHub sensor."""
import json
2022-02-26 14:56:36 +00:00
from homeassistant.components.github.const import DOMAIN, FALLBACK_UPDATE_INTERVAL
from homeassistant.core import HomeAssistant
from homeassistant.util import dt
2022-02-26 14:56:36 +00:00
from .common import TEST_REPOSITORY
from tests.common import MockConfigEntry, async_fire_time_changed, load_fixture
from tests.test_util.aiohttp import AiohttpClientMocker
TEST_SENSOR_ENTITY = "sensor.octocat_hello_world_latest_release"
2022-01-26 15:31:21 +00:00
async def test_sensor_updates_with_empty_release_array(
hass: HomeAssistant,
init_integration: MockConfigEntry,
aioclient_mock: AiohttpClientMocker,
2022-01-26 15:31:21 +00:00
) -> None:
"""Test the sensor updates by default GitHub sensors."""
state = hass.states.get(TEST_SENSOR_ENTITY)
assert state.state == "v1.0.0"
response_json = json.loads(load_fixture("graphql.json", DOMAIN))
response_json["data"]["repository"]["release"] = None
2022-02-26 14:56:36 +00:00
headers = json.loads(load_fixture("base_headers.json", DOMAIN))
aioclient_mock.clear_requests()
2022-02-26 14:56:36 +00:00
aioclient_mock.get(
f"https://api.github.com/repos/{TEST_REPOSITORY}/events",
json=[],
headers=headers,
)
aioclient_mock.post(
"https://api.github.com/graphql",
json=response_json,
2022-02-26 14:56:36 +00:00
headers=headers,
)
2022-01-26 15:31:21 +00:00
2022-02-26 14:56:36 +00:00
async_fire_time_changed(hass, dt.utcnow() + FALLBACK_UPDATE_INTERVAL)
await hass.async_block_till_done()
2022-01-26 15:31:21 +00:00
new_state = hass.states.get(TEST_SENSOR_ENTITY)
assert new_state.state == "unavailable"