async def test_connection_closed_during_update_can_recover( hass, remote, mock_now): """Testing update tv connection closed exception can recover.""" await setup_samsungtv(hass, MOCK_CONFIG) with patch( "homeassistant.components.samsungtv.bridge.Remote", side_effect=[exceptions.ConnectionClosed(), DEFAULT_MOCK], ): next_update = mock_now + timedelta(minutes=5) with patch("homeassistant.util.dt.utcnow", return_value=next_update): async_fire_time_changed(hass, next_update) await hass.async_block_till_done() state = hass.states.get(ENTITY_ID) assert state.state == STATE_OFF next_update = mock_now + timedelta(minutes=10) with patch("homeassistant.util.dt.utcnow", return_value=next_update): async_fire_time_changed(hass, next_update) await hass.async_block_till_done() state = hass.states.get(ENTITY_ID) assert state.state == STATE_ON
async def test_send_key_connection_closed_retry_succeed(hass, remote): """Test retry on connection closed.""" await setup_samsungtv(hass, MOCK_CONFIG) remote.control = mock.Mock(side_effect=[ exceptions.ConnectionClosed("Boom"), mock.DEFAULT, mock.DEFAULT ]) assert await hass.services.async_call(DOMAIN, SERVICE_VOLUME_UP, {ATTR_ENTITY_ID: ENTITY_ID}, True) state = hass.states.get(ENTITY_ID) # key because of retry two times and update called assert remote.control.call_count == 3 assert remote.control.call_args_list == [ call("KEY_VOLUP"), call("KEY_VOLUP"), call("KEY"), ] assert state.state == STATE_ON