"""Test add-on panel.""" from unittest.mock import Mock, patch import pytest from homeassistant.setup import async_setup_component from tests.common import mock_coro @pytest.fixture(autouse=True) def mock_all(aioclient_mock): """Mock all setup requests.""" aioclient_mock.post("http://127.0.0.1/homeassistant/options", json={"result": "ok"}) aioclient_mock.get("http://127.0.0.1/supervisor/ping", json={"result": "ok"}) aioclient_mock.post("http://127.0.0.1/supervisor/options", json={"result": "ok"}) aioclient_mock.get( "http://127.0.0.1/homeassistant/info", json={"result": "ok", "data": {"last_version": "10.0"}}, ) async def test_hassio_addon_panel_startup(hass, aioclient_mock, hassio_env): """Test startup and panel setup after event.""" aioclient_mock.get( "http://127.0.0.1/ingress/panels", json={ "result": "ok", "data": { "panels": { "test1": { "enable": True, "title": "Test", "icon": "mdi:test", "admin": False, }, "test2": { "enable": False, "title": "Test 2", "icon": "mdi:test2", "admin": True, }, } }, }, ) assert aioclient_mock.call_count == 0 with patch( "homeassistant.components.hassio.addon_panel._register_panel", Mock(return_value=mock_coro()), ) as mock_panel: await async_setup_component(hass, "hassio", {}) await hass.async_block_till_done() assert aioclient_mock.call_count == 3 assert mock_panel.called mock_panel.assert_called_with( hass, "test1", {"enable": True, "title": "Test", "icon": "mdi:test", "admin": False}, ) async def test_hassio_addon_panel_api(hass, aioclient_mock, hassio_env, hass_client): """Test panel api after event.""" aioclient_mock.get( "http://127.0.0.1/ingress/panels", json={ "result": "ok", "data": { "panels": { "test1": { "enable": True, "title": "Test", "icon": "mdi:test", "admin": False, }, "test2": { "enable": False, "title": "Test 2", "icon": "mdi:test2", "admin": True, }, } }, }, ) assert aioclient_mock.call_count == 0 with patch( "homeassistant.components.hassio.addon_panel._register_panel", Mock(return_value=mock_coro()), ) as mock_panel: await async_setup_component(hass, "hassio", {}) await hass.async_block_till_done() assert aioclient_mock.call_count == 3 assert mock_panel.called mock_panel.assert_called_with( hass, "test1", {"enable": True, "title": "Test", "icon": "mdi:test", "admin": False}, ) hass_client = await hass_client() resp = await hass_client.post("/api/hassio_push/panel/test2") assert resp.status == 400 resp = await hass_client.post("/api/hassio_push/panel/test1") assert resp.status == 200 assert mock_panel.call_count == 2 mock_panel.assert_called_with( hass, "test1", {"enable": True, "title": "Test", "icon": "mdi:test", "admin": False}, )