core/tests/components/kira/test_init.py

88 lines
2.4 KiB
Python

"""The tests for Home Assistant ffmpeg."""
import os
import shutil
import tempfile
from unittest.mock import MagicMock, patch
import pytest
import homeassistant.components.kira as kira
from homeassistant.setup import async_setup_component
TEST_CONFIG = {
kira.DOMAIN: {
"sensors": [
{"name": "test_sensor", "host": "127.0.0.1", "port": 34293},
{"name": "second_sensor", "port": 29847},
],
"remotes": [
{"host": "127.0.0.1", "port": 34293},
{"name": "one_more", "host": "127.0.0.1", "port": 29847},
],
}
}
KIRA_CODES = """
- name: test
code: "K 00FF"
- invalid: not_a_real_code
"""
@pytest.fixture(autouse=True)
def setup_comp():
"""Set up things to be run when tests are started."""
_base_mock = MagicMock()
pykira = _base_mock.pykira
pykira.__file__ = "test"
_module_patcher = patch.dict("sys.modules", {"pykira": pykira})
_module_patcher.start()
yield
_module_patcher.stop()
@pytest.fixture(scope="module")
def work_dir():
"""Set up temporary workdir."""
work_dir = tempfile.mkdtemp()
yield work_dir
shutil.rmtree(work_dir, ignore_errors=True)
async def test_kira_empty_config(hass):
"""Kira component should load a default sensor."""
await async_setup_component(hass, kira.DOMAIN, {kira.DOMAIN: {}})
assert len(hass.data[kira.DOMAIN]["sensor"]) == 1
async def test_kira_setup(hass):
"""Ensure platforms are loaded correctly."""
await async_setup_component(hass, kira.DOMAIN, TEST_CONFIG)
assert len(hass.data[kira.DOMAIN]["sensor"]) == 2
assert sorted(hass.data[kira.DOMAIN]["sensor"].keys()) == [
"kira",
"kira_1",
]
assert len(hass.data[kira.DOMAIN]["remote"]) == 2
assert sorted(hass.data[kira.DOMAIN]["remote"].keys()) == [
"kira",
"kira_1",
]
async def test_kira_creates_codes(work_dir):
"""Kira module should create codes file if missing."""
code_path = os.path.join(work_dir, "codes.yaml")
kira.load_codes(code_path)
assert os.path.exists(code_path), "Kira component didn't create codes file"
async def test_load_codes(work_dir):
"""Kira should ignore invalid codes."""
code_path = os.path.join(work_dir, "codes.yaml")
with open(code_path, "w") as code_file:
code_file.write(KIRA_CODES)
res = kira.load_codes(code_path)
assert len(res) == 1, "Expected exactly 1 valid Kira code"