"""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)