mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 13:17:32 +00:00
Add frontend.remove_extra_js_url (#119831)
This commit is contained in:
parent
c0a3b507c0
commit
8af5748716
@ -330,6 +330,15 @@ def add_extra_js_url(hass: HomeAssistant, url: str, es5: bool = False) -> None:
|
|||||||
hass.data[key].add(url)
|
hass.data[key].add(url)
|
||||||
|
|
||||||
|
|
||||||
|
def remove_extra_js_url(hass: HomeAssistant, url: str, es5: bool = False) -> None:
|
||||||
|
"""Remove extra js or module url to load.
|
||||||
|
|
||||||
|
This function allows custom integrations to remove extra js or module.
|
||||||
|
"""
|
||||||
|
key = DATA_EXTRA_JS_URL_ES5 if es5 else DATA_EXTRA_MODULE_URL
|
||||||
|
hass.data[key].remove(url)
|
||||||
|
|
||||||
|
|
||||||
def add_manifest_json_key(key: str, val: Any) -> None:
|
def add_manifest_json_key(key: str, val: Any) -> None:
|
||||||
"""Add a keyval to the manifest.json."""
|
"""Add a keyval to the manifest.json."""
|
||||||
MANIFEST_JSON.update_key(key, val)
|
MANIFEST_JSON.update_key(key, val)
|
||||||
|
@ -21,6 +21,7 @@ from homeassistant.components.frontend import (
|
|||||||
add_extra_js_url,
|
add_extra_js_url,
|
||||||
async_register_built_in_panel,
|
async_register_built_in_panel,
|
||||||
async_remove_panel,
|
async_remove_panel,
|
||||||
|
remove_extra_js_url,
|
||||||
)
|
)
|
||||||
from homeassistant.components.websocket_api import TYPE_RESULT
|
from homeassistant.components.websocket_api import TYPE_RESULT
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
@ -409,43 +410,48 @@ async def test_missing_themes(hass: HomeAssistant, ws_client) -> None:
|
|||||||
@pytest.mark.usefixtures("mock_onboarded")
|
@pytest.mark.usefixtures("mock_onboarded")
|
||||||
async def test_extra_js(hass: HomeAssistant, mock_http_client_with_extra_js) -> None:
|
async def test_extra_js(hass: HomeAssistant, mock_http_client_with_extra_js) -> None:
|
||||||
"""Test that extra javascript is loaded."""
|
"""Test that extra javascript is loaded."""
|
||||||
resp = await mock_http_client_with_extra_js.get("")
|
|
||||||
assert resp.status == 200
|
|
||||||
assert "cache-control" not in resp.headers
|
|
||||||
|
|
||||||
text = await resp.text()
|
async def get_response():
|
||||||
|
resp = await mock_http_client_with_extra_js.get("")
|
||||||
|
assert resp.status == 200
|
||||||
|
assert "cache-control" not in resp.headers
|
||||||
|
|
||||||
|
return await resp.text()
|
||||||
|
|
||||||
|
text = await get_response()
|
||||||
assert '"/local/my_module.js"' in text
|
assert '"/local/my_module.js"' in text
|
||||||
assert '"/local/my_es5.js"' in text
|
assert '"/local/my_es5.js"' in text
|
||||||
|
|
||||||
# Test dynamically adding extra javascript
|
# Test dynamically adding and removing extra javascript
|
||||||
add_extra_js_url(hass, "/local/my_module_2.js", False)
|
add_extra_js_url(hass, "/local/my_module_2.js", False)
|
||||||
add_extra_js_url(hass, "/local/my_es5_2.js", True)
|
add_extra_js_url(hass, "/local/my_es5_2.js", True)
|
||||||
resp = await mock_http_client_with_extra_js.get("")
|
text = await get_response()
|
||||||
assert resp.status == 200
|
|
||||||
assert "cache-control" not in resp.headers
|
|
||||||
|
|
||||||
text = await resp.text()
|
|
||||||
assert '"/local/my_module_2.js"' in text
|
assert '"/local/my_module_2.js"' in text
|
||||||
assert '"/local/my_es5_2.js"' in text
|
assert '"/local/my_es5_2.js"' in text
|
||||||
|
|
||||||
|
remove_extra_js_url(hass, "/local/my_module_2.js", False)
|
||||||
|
remove_extra_js_url(hass, "/local/my_es5_2.js", True)
|
||||||
|
text = await get_response()
|
||||||
|
assert '"/local/my_module_2.js"' not in text
|
||||||
|
assert '"/local/my_es5_2.js"' not in text
|
||||||
|
|
||||||
|
# Remove again should not raise
|
||||||
|
remove_extra_js_url(hass, "/local/my_module_2.js", False)
|
||||||
|
remove_extra_js_url(hass, "/local/my_es5_2.js", True)
|
||||||
|
text = await get_response()
|
||||||
|
assert '"/local/my_module_2.js"' not in text
|
||||||
|
assert '"/local/my_es5_2.js"' not in text
|
||||||
|
|
||||||
# safe mode
|
# safe mode
|
||||||
hass.config.safe_mode = True
|
hass.config.safe_mode = True
|
||||||
resp = await mock_http_client_with_extra_js.get("")
|
text = await get_response()
|
||||||
assert resp.status == 200
|
|
||||||
assert "cache-control" not in resp.headers
|
|
||||||
|
|
||||||
text = await resp.text()
|
|
||||||
assert '"/local/my_module.js"' not in text
|
assert '"/local/my_module.js"' not in text
|
||||||
assert '"/local/my_es5.js"' not in text
|
assert '"/local/my_es5.js"' not in text
|
||||||
|
|
||||||
# Test dynamically adding extra javascript
|
# Test dynamically adding extra javascript
|
||||||
add_extra_js_url(hass, "/local/my_module_2.js", False)
|
add_extra_js_url(hass, "/local/my_module_2.js", False)
|
||||||
add_extra_js_url(hass, "/local/my_es5_2.js", True)
|
add_extra_js_url(hass, "/local/my_es5_2.js", True)
|
||||||
resp = await mock_http_client_with_extra_js.get("")
|
text = await get_response()
|
||||||
assert resp.status == 200
|
|
||||||
assert "cache-control" not in resp.headers
|
|
||||||
|
|
||||||
text = await resp.text()
|
|
||||||
assert '"/local/my_module_2.js"' not in text
|
assert '"/local/my_module_2.js"' not in text
|
||||||
assert '"/local/my_es5_2.js"' not in text
|
assert '"/local/my_es5_2.js"' not in text
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user