async def test_json_download_failure(hass, raised_exception): """Existing data is not updated if exception enocuntered while downloading json.""" coordinator = YahooSymbolUpdateCoordinator([TEST_SYMBOL], hass, DEFAULT_SCAN_INTERVAL) coordinator.websession.get = AsyncMock(side_effect=raised_exception) existing_data = {TEST_SYMBOL: {DATA_REGULAR_MARKET_PRICE: random.random()}} coordinator.data = existing_data await coordinator.async_refresh() await hass.async_block_till_done() assert coordinator.data is existing_data assert coordinator.last_update_success is False
async def test_incomplete_json(hass, parsed_json, message): """Existing data is not updated if JSON is invalid.""" print(message) coordinator = YahooSymbolUpdateCoordinator(None, hass, DEFAULT_SCAN_INTERVAL) coordinator.get_json = AsyncMock(return_value=parsed_json) existing_data = {TEST_SYMBOL: {DATA_REGULAR_MARKET_PRICE: random.random()}} coordinator.data = existing_data # last_update_success is initially True assert coordinator.last_update_success is True await coordinator.async_refresh() await hass.async_block_till_done() # Data was invalid, existing data was left unchanged and last_update_success becomes False assert coordinator.data is existing_data assert coordinator.last_update_success is False
async def test_json_download_failure(hass, raised_exception): """Existing data is not updated if exception enocuntered while downloading json.""" mock_coordinator = YahooSymbolUpdateCoordinator([TEST_SYMBOL], hass, DEFAULT_SCAN_INTERVAL) mock_coordinator.websession.get = AsyncMock(side_effect=raised_exception) existing_data = {TEST_SYMBOL: {DATA_REGULAR_MARKET_PRICE: random.random()}} mock_coordinator.data = existing_data mock_coordinator_listener = Mock() mock_coordinator.async_add_listener(mock_coordinator_listener) with patch.object(mock_coordinator, "_schedule_refresh") as mock_schedule_refresh: await mock_coordinator.async_refresh() await hass.async_block_till_done() assert mock_coordinator.data is existing_data assert mock_coordinator.last_update_success is False assert len(mock_coordinator_listener.mock_calls) == 1 assert len(mock_schedule_refresh.mock_calls) == 1