"""Test the WS66i 6-Zone Amplifier init file.""" from unittest.mock import patch from homeassistant.components.ws66i.const import DOMAIN from homeassistant.config_entries import ConfigEntryState from .test_media_player import ( MOCK_CONFIG, MOCK_DEFAULT_OPTIONS, MOCK_OPTIONS, MockWs66i, ) from tests.common import MockConfigEntry ZONE_1_ID = "media_player.zone_11" async def test_cannot_connect(hass): """Test connection error.""" config_entry = MockConfigEntry( domain=DOMAIN, data=MOCK_CONFIG, options=MOCK_OPTIONS ) config_entry.add_to_hass(hass) with patch( "homeassistant.components.ws66i.get_ws66i", new=lambda *a: MockWs66i(fail_open=True), ): await hass.config_entries.async_setup(config_entry.entry_id) await hass.async_block_till_done() assert config_entry.state is ConfigEntryState.SETUP_RETRY assert hass.states.get(ZONE_1_ID) is None async def test_cannot_connect_2(hass): """Test connection error pt 2.""" # Another way to test same case as test_cannot_connect ws66i = MockWs66i() config_entry = MockConfigEntry( domain=DOMAIN, data=MOCK_CONFIG, options=MOCK_DEFAULT_OPTIONS ) config_entry.add_to_hass(hass) with patch.object(MockWs66i, "open", side_effect=ConnectionError): with patch( "homeassistant.components.ws66i.get_ws66i", new=lambda *a: ws66i, ): await hass.config_entries.async_setup(config_entry.entry_id) await hass.async_block_till_done() assert config_entry.state is ConfigEntryState.SETUP_RETRY assert hass.states.get(ZONE_1_ID) is None async def test_unload_config_entry(hass): """Test unloading config entry.""" config_entry = MockConfigEntry( domain=DOMAIN, data=MOCK_CONFIG, options=MOCK_OPTIONS ) config_entry.add_to_hass(hass) with patch( "homeassistant.components.ws66i.get_ws66i", new=lambda *a: MockWs66i(), ): await hass.config_entries.async_setup(config_entry.entry_id) await hass.async_block_till_done() assert hass.data[DOMAIN][config_entry.entry_id] with patch.object(MockWs66i, "close") as method_call: await config_entry.async_unload(hass) await hass.async_block_till_done() assert method_call.called assert not hass.data[DOMAIN]