2016-11-16 05:56:40 +00:00
|
|
|
"""The tests for the Yamaha Media player platform."""
|
|
|
|
import unittest
|
2018-01-17 18:34:21 +00:00
|
|
|
from unittest.mock import patch, MagicMock
|
|
|
|
|
|
|
|
from homeassistant.setup import setup_component
|
|
|
|
import homeassistant.components.media_player as mp
|
|
|
|
from homeassistant.components.media_player import yamaha
|
|
|
|
from tests.common import get_test_home_assistant
|
|
|
|
|
|
|
|
|
|
|
|
def _create_zone_mock(name, url):
|
|
|
|
zone = MagicMock()
|
|
|
|
zone.ctrl_url = url
|
|
|
|
zone.zone = name
|
|
|
|
return zone
|
|
|
|
|
|
|
|
|
2018-07-20 08:45:20 +00:00
|
|
|
class FakeYamahaDevice:
|
2018-01-17 18:34:21 +00:00
|
|
|
"""A fake Yamaha device."""
|
|
|
|
|
|
|
|
def __init__(self, ctrl_url, name, zones=None):
|
|
|
|
"""Initialize the fake Yamaha device."""
|
|
|
|
self.ctrl_url = ctrl_url
|
|
|
|
self.name = name
|
|
|
|
self.zones = zones or []
|
|
|
|
|
|
|
|
def zone_controllers(self):
|
|
|
|
"""Return controllers for all available zones."""
|
|
|
|
return self.zones
|
|
|
|
|
|
|
|
|
|
|
|
class TestYamahaMediaPlayer(unittest.TestCase):
|
|
|
|
"""Test the Yamaha media player."""
|
2016-11-16 05:56:40 +00:00
|
|
|
|
2016-11-18 22:05:03 +00:00
|
|
|
def setUp(self):
|
2016-11-16 05:56:40 +00:00
|
|
|
"""Setup things to be run when tests are started."""
|
2018-01-17 18:34:21 +00:00
|
|
|
self.hass = get_test_home_assistant()
|
|
|
|
self.main_zone = _create_zone_mock('Main zone', 'http://main')
|
|
|
|
self.device = FakeYamahaDevice(
|
|
|
|
'http://receiver', 'Receiver', zones=[self.main_zone])
|
|
|
|
|
|
|
|
def tearDown(self):
|
|
|
|
"""Stop everything that was started."""
|
|
|
|
self.hass.stop()
|
|
|
|
|
|
|
|
def enable_output(self, port, enabled):
|
2018-01-27 19:58:27 +00:00
|
|
|
"""Enable output on a specific port."""
|
2018-01-17 18:34:21 +00:00
|
|
|
data = {
|
|
|
|
'entity_id': 'media_player.yamaha_receiver_main_zone',
|
|
|
|
'port': port,
|
|
|
|
'enabled': enabled
|
|
|
|
}
|
|
|
|
|
|
|
|
self.hass.services.call(yamaha.DOMAIN,
|
|
|
|
yamaha.SERVICE_ENABLE_OUTPUT,
|
|
|
|
data,
|
|
|
|
True)
|
|
|
|
|
|
|
|
def create_receiver(self, mock_rxv):
|
|
|
|
"""Create a mocked receiver."""
|
|
|
|
mock_rxv.return_value = self.device
|
|
|
|
|
|
|
|
config = {
|
|
|
|
'media_player': {
|
|
|
|
'platform': 'yamaha',
|
|
|
|
'host': '127.0.0.1'
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
self.assertTrue(setup_component(self.hass, mp.DOMAIN, config))
|
|
|
|
|
|
|
|
@patch('rxv.RXV')
|
|
|
|
def test_enable_output(self, mock_rxv):
|
|
|
|
"""Test enabling and disabling outputs."""
|
|
|
|
self.create_receiver(mock_rxv)
|
|
|
|
|
|
|
|
self.enable_output('hdmi1', True)
|
|
|
|
self.main_zone.enable_output.assert_called_with('hdmi1', True)
|
|
|
|
|
|
|
|
self.enable_output('hdmi2', False)
|
|
|
|
self.main_zone.enable_output.assert_called_with('hdmi2', False)
|