diff --git a/umap/static/umap/js/modules/caption.js b/umap/static/umap/js/modules/caption.js index 4b859188..3374eabc 100644 --- a/umap/static/umap/js/modules/caption.js +++ b/umap/static/umap/js/modules/caption.js @@ -20,7 +20,7 @@ export default class Caption { }) } const datalayerContainer = DomUtil.create('div', 'datalayer-container', container) - this.map.eachVisibleDataLayer((datalayer) => this.addDataLayer(datalayer, datalayerContainer)) + this.map.eachDataLayer((datalayer) => this.addDataLayer(datalayer, datalayerContainer)) const creditsContainer = DomUtil.create('div', 'credits-container', container) this.addCredits(creditsContainer) this.map.panel.open({ content: container }) diff --git a/umap/tests/base.py b/umap/tests/base.py index 62f948eb..e1abba32 100644 --- a/umap/tests/base.py +++ b/umap/tests/base.py @@ -125,6 +125,7 @@ class DataLayerFactory(factory.django.DjangoModelFactory): **kwargs["settings"], } data.setdefault("_umap_options", {}) + kwargs["settings"]["name"] = kwargs["name"] data["_umap_options"]["name"] = kwargs["name"] kwargs["geojson"] = ContentFile(json.dumps(data), "foo.json") return kwargs diff --git a/umap/tests/integration/test_caption.py b/umap/tests/integration/test_caption.py new file mode 100644 index 00000000..2936d65c --- /dev/null +++ b/umap/tests/integration/test_caption.py @@ -0,0 +1,24 @@ +import pytest +from playwright.sync_api import expect + +from ..base import DataLayerFactory + +pytestmark = pytest.mark.django_db + + +def test_caption(live_server, page, map): + map.settings["properties"]["onLoadPanel"] = "caption" + map.save() + basic = DataLayerFactory(map=map, name="Basic layer") + non_loaded = DataLayerFactory( + map=map, name="Non loaded", settings={"displayOnLoad": False} + ) + hidden = DataLayerFactory(map=map, name="Hidden", settings={"inCaption": False}) + page.goto(f"{live_server.url}{map.get_absolute_url()}") + panel = page.locator(".umap-caption") + expect(panel).to_be_visible() + expect(panel.locator(".datalayer-legend").get_by_text(basic.name)).to_be_visible() + expect( + panel.locator(".datalayer-legend .off").get_by_text(non_loaded.name) + ).to_be_visible() + expect(panel.locator(".datalayer-legend").get_by_text(hidden.name)).to_be_hidden() diff --git a/umap/tests/integration/test_map.py b/umap/tests/integration/test_map.py index 87c673eb..5bbc128f 100644 --- a/umap/tests/integration/test_map.py +++ b/umap/tests/integration/test_map.py @@ -188,21 +188,6 @@ def test_remote_layer_should_not_be_used_as_datalayer_for_created_features( expect(layers).to_have_count(2) -def test_can_hide_datalayer_from_caption(openmap, live_server, datalayer, page): - # Add another DataLayer - other = DataLayerFactory(map=openmap, name="Hidden", settings={"inCaption": False}) - page.goto(f"{live_server.url}{openmap.get_absolute_url()}") - toggle = page.get_by_text("About").first - expect(toggle).to_be_visible() - toggle.click() - layers = page.locator(".umap-caption .datalayer-legend") - expect(layers).to_have_count(1) - found = page.locator(".panel.left.on").get_by_text(datalayer.name) - expect(found).to_be_visible() - hidden = page.locator(".panel.left.on").get_by_text(other.name) - expect(hidden).to_be_hidden() - - def test_minimap_on_load(map, live_server, datalayer, page): page.goto(f"{live_server.url}{map.get_absolute_url()}") expect(page.locator(".leaflet-control-minimap")).to_be_hidden()