From 96ae7ddbc7638bd610aa1f79743248c7e0a79588 Mon Sep 17 00:00:00 2001 From: Yohan Boniface Date: Wed, 17 Jan 2024 18:42:46 +0100 Subject: [PATCH] chore: deactivate custom statics manager for test by default And add one file that run it and check all js files are loaded. --- umap/templates/umap/js.html | 2 +- umap/tests/integration/test_statics.py | 43 ++++++++++++++++++++++++++ umap/tests/settings.py | 3 ++ 3 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 umap/tests/integration/test_statics.py diff --git a/umap/templates/umap/js.html b/umap/templates/umap/js.html index 5ef342ab..62df6bab 100644 --- a/umap/templates/umap/js.html +++ b/umap/templates/umap/js.html @@ -28,7 +28,7 @@ {% if locale %} - {% with 'umap/locale/'|add:locale|add:'.js' as path %} + {% with "umap/locale/"|add:locale|add:".js" as path %} {% endwith %} {% endif %} diff --git a/umap/tests/integration/test_statics.py b/umap/tests/integration/test_statics.py new file mode 100644 index 00000000..657609b1 --- /dev/null +++ b/umap/tests/integration/test_statics.py @@ -0,0 +1,43 @@ +import re +import shutil +import tempfile + +import pytest +from django.core.management import call_command +from django.utils.translation import override +from playwright.sync_api import expect + + +@pytest.fixture +def staticfiles(settings): + static_root = tempfile.mkdtemp(prefix="test_static") + settings.STATIC_ROOT = static_root + try: + call_command("collectstatic", "--noinput") + yield + finally: + shutil.rmtree(static_root) + + +def test_javascript_have_been_loaded( + map, live_server, datalayer, page, settings, staticfiles +): + settings.STORAGES["staticfiles"][ + "BACKEND" + ] = "umap.utils.UmapManifestStaticFilesStorage" + datalayer.settings["displayOnLoad"] = False + datalayer.save() + map.settings["properties"]["defaultView"] = "latest" + map.save() + with override("fr"): + url = f"{live_server.url}{map.get_absolute_url()}" + assert "/fr/" in url + page.goto(url) + # Hash is defined, so map is initialized + expect(page).to_have_url(re.compile(r".*#7/48\..+/13\..+")) + expect(page).to_have_url(re.compile(r".*/fr/")) + # Should be in French, so hashed locale file has been loaded correctly + button = page.get_by_text("Voir les calques") + expect(button).to_be_visible() + layers = page.locator(".umap-browse-datalayers li") + expect(layers).to_have_count(1) diff --git a/umap/tests/settings.py b/umap/tests/settings.py index e1105fa9..c79521f0 100644 --- a/umap/tests/settings.py +++ b/umap/tests/settings.py @@ -5,6 +5,9 @@ from umap.settings.base import * # pylint: disable=W0614,W0401 SECRET_KEY = "justfortests" FROM_EMAIL = "test@test.org" EMAIL_BACKEND = "django.core.mail.backends.locmem.EmailBackend" +STORAGES["staticfiles"][ + "BACKEND" +] = "django.contrib.staticfiles.storage.StaticFilesStorage" if os.environ.get("GITHUB_ACTIONS", False) == "true": DATABASES = {