chore: move table editor tests to PW
This commit is contained in:
parent
ca8f7bf280
commit
e0ff82298a
3 changed files with 27 additions and 105 deletions
|
@ -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
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
|
@ -89,7 +89,6 @@
|
||||||
</script>
|
</script>
|
||||||
<script src="./_pre.js" defer></script>
|
<script src="./_pre.js" defer></script>
|
||||||
<script src="./Map.js" defer></script>
|
<script src="./Map.js" defer></script>
|
||||||
<script src="./TableEditor.js" defer></script>
|
|
||||||
<script src="./Feature.js" defer></script>
|
<script src="./Feature.js" defer></script>
|
||||||
<script src="./Marker.js" defer></script>
|
<script src="./Marker.js" defer></script>
|
||||||
<script src="./Polyline.js" defer></script>
|
<script src="./Polyline.js" defer></script>
|
||||||
|
|
27
umap/tests/integration/test_tableeditor.py
Normal file
27
umap/tests/integration/test_tableeditor.py
Normal file
|
@ -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"]
|
Loading…
Reference in a new issue