diff --git a/umap/static/umap/test/TableEditor.js b/umap/static/umap/test/TableEditor.js deleted file mode 100644 index aa0578af..00000000 --- a/umap/static/umap/test/TableEditor.js +++ /dev/null @@ -1,104 +0,0 @@ -describe('L.TableEditor', () => { - let path = '/map/99/datalayer/edit/62/', - datalayer - - before(async () => { - await fetchMock.mock( - /\/datalayer\/62\/\?.*/, - JSON.stringify(RESPONSES.datalayer62_GET) - ) - this.options = { - umap_id: 99, - } - map = initMap({ umap_id: 99 }) - const datalayer_options = defaultDatalayerData() - await map.initDataLayers([datalayer_options]) - datalayer = map.getDataLayerByUmapId(62) - enableEdit() - }) - after(() => { - fetchMock.restore() - clickCancel() - resetMap() - }) - - describe('#open()', () => { - var button - - it('should exist table click on edit mode', () => { - button = qs( - '#browse_data_toggle_' + L.stamp(datalayer) + ' .layer-table-edit' - ) - expect(button).to.be.ok - }) - - it('should open table button click', () => { - happen.click(button) - expect(qs('#umap-ui-container div.table')).to.be.ok - expect(qsa('#umap-ui-container div.table form').length).to.eql(3) // One per feature. - expect(qsa('#umap-ui-container div.table input').length).to.eql(3) // One per feature and per property. - }) - }) - describe('#properties()', () => { - var feature - - before(() => { - var firstIndex = datalayer._index[0] - feature = datalayer._layers[firstIndex] - }) - - it('should create new property column', () => { - var newPrompt = () => { - return 'newprop' - } - var oldPrompt = window.prompt - window.prompt = newPrompt - var button = qs('#umap-ui-container .add-property') - expect(button).to.be.ok - happen.click(button) - expect(qsa('#umap-ui-container div.table input').length).to.eql(6) // One per feature and per property. - window.prompt = oldPrompt - }) - - it('should populate feature property on fill', () => { - var input = qs( - 'form#umap-feature-properties_' + L.stamp(feature) + ' input[name=newprop]' - ) - changeInputValue(input, 'the value') - expect(feature.properties.newprop).to.eql('the value') - }) - - it('should update property name on update click', () => { - var newPrompt = () => { - return 'newname' - } - var oldPrompt = window.prompt - window.prompt = newPrompt - var button = qs('#umap-ui-container div.thead div.tcell:last-of-type .umap-edit') - expect(button).to.be.ok - happen.click(button) - expect(qsa('#umap-ui-container div.table input').length).to.eql(6) - expect(feature.properties.newprop).to.be.undefined - expect(feature.properties.newname).to.eql('the value') - window.prompt = oldPrompt - }) - - it('should update property on delete click', () => { - var oldConfirm, - newConfirm = () => { - return true - } - oldConfirm = window.confirm - window.confirm = newConfirm - var button = qs( - '#umap-ui-container div.thead div.tcell:last-of-type .umap-delete' - ) - expect(button).to.be.ok - happen.click(button) - FEATURE = feature - expect(qsa('#umap-ui-container div.table input').length).to.eql(3) - expect(feature.properties.newname).to.be.undefined - window.confirm = oldConfirm - }) - }) -}) diff --git a/umap/static/umap/test/index.html b/umap/static/umap/test/index.html index e4d2c811..9fee3dba 100644 --- a/umap/static/umap/test/index.html +++ b/umap/static/umap/test/index.html @@ -89,7 +89,6 @@ - diff --git a/umap/tests/integration/test_tableeditor.py b/umap/tests/integration/test_tableeditor.py new file mode 100644 index 00000000..cb26e511 --- /dev/null +++ b/umap/tests/integration/test_tableeditor.py @@ -0,0 +1,27 @@ +import json +import re +from pathlib import Path + +from playwright.sync_api import expect + +from umap.models import DataLayer + + +def test_table_editor(live_server, openmap, datalayer, page): + page.goto(f"{live_server.url}{openmap.get_absolute_url()}?edit") + page.get_by_role("link", name="Manage layers").click() + page.locator("#umap-ui-container").get_by_title( + "Edit properties in a table" + ).click() + page.once("dialog", lambda dialog: dialog.accept(prompt_text="newprop")) + page.get_by_text("Add a new property").click() + page.locator('input[name="newprop"]').fill("newvalue") + page.once("dialog", lambda dialog: dialog.accept()) + page.hover(".umap-table-editor .tcell") + page.get_by_title("Delete this property on all").first.click() + with page.expect_response(re.compile(r".*/datalayer/update/.*")): + page.get_by_role("button", name="Save").click() + saved = DataLayer.objects.last() + data = json.loads(Path(saved.geojson.path).read_text()) + assert data["features"][0]["properties"]["newprop"] == "newvalue" + assert "name" not in data["features"][0]["properties"]