"""The tests for Home Assistant ffmpeg.""" import os import shutil import tempfile import unittest from unittest.mock import patch, MagicMock import homeassistant.components.kira as kira from homeassistant.setup import setup_component from tests.common import get_test_home_assistant 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 """ class TestKiraSetup(unittest.TestCase): """Test class for kira.""" # pylint: disable=invalid-name def setUp(self): """Set up things to be run when tests are started.""" self.hass = get_test_home_assistant() _base_mock = MagicMock() pykira = _base_mock.pykira pykira.__file__ = 'test' self._module_patcher = patch.dict('sys.modules', { 'pykira': pykira }) self._module_patcher.start() self.work_dir = tempfile.mkdtemp() def tearDown(self): """Stop everything that was started.""" self.hass.stop() self._module_patcher.stop() shutil.rmtree(self.work_dir, ignore_errors=True) def test_kira_empty_config(self): """Kira component should load a default sensor.""" setup_component(self.hass, kira.DOMAIN, {}) assert len(self.hass.data[kira.DOMAIN]['sensor']) == 1 def test_kira_setup(self): """Ensure platforms are loaded correctly.""" setup_component(self.hass, kira.DOMAIN, TEST_CONFIG) assert len(self.hass.data[kira.DOMAIN]['sensor']) == 2 assert sorted(self.hass.data[kira.DOMAIN]['sensor'].keys()) == \ ['kira', 'kira_1'] assert len(self.hass.data[kira.DOMAIN]['remote']) == 2 assert sorted(self.hass.data[kira.DOMAIN]['remote'].keys()) == \ ['kira', 'kira_1'] def test_kira_creates_codes(self): """Kira module should create codes file if missing.""" code_path = os.path.join(self.work_dir, 'codes.yaml') kira.load_codes(code_path) assert os.path.exists(code_path), \ "Kira component didn't create codes file" def test_load_codes(self): """Kira should ignore invalid codes.""" code_path = os.path.join(self.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"