"""The tests for the LG webOS media player platform.""" import unittest from unittest import mock from homeassistant.components.webostv import media_player as webostv class FakeLgWebOSDevice(webostv.LgWebOSDevice): """A fake device without the client setup required for the real one.""" def __init__(self, *args, **kwargs): """Initialise parameters needed for tests with fake values.""" self._source_list = {} self._client = mock.MagicMock() self._name = "fake_device" self._current_source = None class TestLgWebOSDevice(unittest.TestCase): """Test the LgWebOSDevice class.""" def setUp(self): """Configure a fake device for each test.""" self.device = FakeLgWebOSDevice() def test_select_source_with_empty_source_list(self): """Ensure we don't call client methods when we don't have sources.""" self.device.select_source("nonexistent") assert 0 == self.device._client.launch_app.call_count assert 0 == self.device._client.set_input.call_count def test_select_source_with_titled_entry(self): """Test that a titled source is treated as an app.""" self.device._source_list = { "existent": {"id": "existent_id", "title": "existent_title"} } self.device.select_source("existent") assert "existent_title" == self.device._current_source assert [mock.call("existent_id")] == ( self.device._client.launch_app.call_args_list ) def test_select_source_with_labelled_entry(self): """Test that a labelled source is treated as an input source.""" self.device._source_list = { "existent": {"id": "existent_id", "label": "existent_label"} } self.device.select_source("existent") assert "existent_label" == self.device._current_source assert [mock.call("existent_id")] == ( self.device._client.set_input.call_args_list )