"""Test pi_hole component.""" from homeassistant.components import pi_hole from homeassistant.const import STATE_ON, STATE_UNKNOWN from homeassistant.setup import async_setup_component from . import _create_mocked_hole, _patch_config_flow_hole, _patch_init_hole async def test_update(hass): """Tests update entity.""" mocked_hole = _create_mocked_hole() with _patch_config_flow_hole(mocked_hole), _patch_init_hole(mocked_hole): assert await async_setup_component( hass, pi_hole.DOMAIN, {pi_hole.DOMAIN: [{"host": "pi.hole"}]} ) await hass.async_block_till_done() state = hass.states.get("update.pi_hole_core_update_available") assert state.name == "Pi-Hole Core Update Available" assert state.state == STATE_ON assert state.attributes["installed_version"] == "v5.5" assert state.attributes["latest_version"] == "v5.6" assert ( state.attributes["release_url"] == "https://github.com/pi-hole/pi-hole/releases/tag/v5.6" ) state = hass.states.get("update.pi_hole_ftl_update_available") assert state.name == "Pi-Hole FTL Update Available" assert state.state == STATE_ON assert state.attributes["installed_version"] == "v5.10" assert state.attributes["latest_version"] == "v5.11" assert ( state.attributes["release_url"] == "https://github.com/pi-hole/FTL/releases/tag/v5.11" ) state = hass.states.get("update.pi_hole_web_update_available") assert state.name == "Pi-Hole Web Update Available" assert state.state == STATE_ON assert state.attributes["installed_version"] == "v5.7" assert state.attributes["latest_version"] == "v5.8" assert ( state.attributes["release_url"] == "https://github.com/pi-hole/AdminLTE/releases/tag/v5.8" ) async def test_update_no_versions(hass): """Tests update entity when no version data available.""" mocked_hole = _create_mocked_hole(has_versions=False) with _patch_config_flow_hole(mocked_hole), _patch_init_hole(mocked_hole): assert await async_setup_component( hass, pi_hole.DOMAIN, {pi_hole.DOMAIN: [{"host": "pi.hole"}]} ) await hass.async_block_till_done() state = hass.states.get("update.pi_hole_core_update_available") assert state.name == "Pi-Hole Core Update Available" assert state.state == STATE_UNKNOWN assert state.attributes["installed_version"] is None assert state.attributes["latest_version"] is None assert state.attributes["release_url"] is None state = hass.states.get("update.pi_hole_ftl_update_available") assert state.name == "Pi-Hole FTL Update Available" assert state.state == STATE_UNKNOWN assert state.attributes["installed_version"] is None assert state.attributes["latest_version"] is None assert state.attributes["release_url"] is None state = hass.states.get("update.pi_hole_web_update_available") assert state.name == "Pi-Hole Web Update Available" assert state.state == STATE_UNKNOWN assert state.attributes["installed_version"] is None assert state.attributes["latest_version"] is None assert state.attributes["release_url"] is None