core/tests/components/yamaha/test_media_player.py

77 lines
2.3 KiB
Python

"""The tests for the Yamaha Media player platform."""
import unittest
import homeassistant.components.media_player as mp
from homeassistant.components.yamaha import media_player as yamaha
from homeassistant.setup import setup_component
from tests.async_mock import MagicMock, patch
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
class FakeYamahaDevice:
"""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."""
def setUp(self):
"""Set up things to be run when tests are started."""
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):
"""Enable output on a specific port."""
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"}}
assert setup_component(self.hass, mp.DOMAIN, config)
self.hass.block_till_done()
@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)