Coverage for gws-app/gws/base/edit/_test/action_test.py: 100%
39 statements
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-16 23:09 +0200
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-16 23:09 +0200
1import gws
2import gws.test.util as u
5@u.fixture(scope='module')
6def root():
7 u.pg.create('plain', {'id': 'int primary key', 'name': 'text', 'g': 'geometry(point,3857)'})
8 u.pg.insert('plain', [
9 dict(id=1, name='a11', g=u.ewkb('POINT(10 100)')),
10 dict(id=2, name='a22', g=u.ewkb('POINT(20 200)')),
11 dict(id=3, name='a33', g=u.ewkb('POINT(30 300)')),
12 ])
14 cfg = '''
15 permissions.all "allow all"
17 models+ {
18 uid "PLAIN" type "postgres" tableName "plain"
19 }
20 actions+ {
21 type 'edit'
22 }
23 projects+ {
24 uid "A"
25 templates+ {
26 subject "feature.title"
27 type "html"
28 text "--{id}/{name}--"
29 }
30 models+ {
31 uid "MODEL_PLAIN"
32 type "postgres"
33 tableName "plain"
34 isEditable true
35 fields+ { name "id" type "integer" isPrimaryKey true }
36 fields+ { name "name" type "text" }
37 fields+ { name "g" type "geometry" }
38 }
39 }
40 '''
42 yield u.gws_root(cfg)
45def test_get_models(root: gws.Root):
46 res = u.http.api(root, 'editGetModels', dict(projectUid='A'))
47 ms = res.json['models']
48 assert ms[0]['uid'] == 'MODEL_PLAIN'
49 assert len(ms[0]['fields']) == 3
52def test_get_feature(root: gws.Root):
53 res = u.http.api(root, 'editGetFeature', dict(projectUid='A', modelUid='MODEL_PLAIN', featureUid='2'))
54 props = res.json['feature']
55 assert props['attributes']['id'] == 2
56 assert props['attributes']['name'] == 'a22'
59def test_write_feature(root: gws.Root):
60 res = u.http.api(root, 'editGetFeature', dict(projectUid='A', modelUid='MODEL_PLAIN', featureUid='2'))
61 props = res.json['feature']
62 props['attributes']['name'] = 'a22-new'
64 res = u.http.api(root, 'editWriteFeature', dict(projectUid='A', modelUid='MODEL_PLAIN', feature=props))
65 assert res.status_code == 200
67 assert u.pg.rows('SELECT id,name FROM plain ORDER BY id') == [
68 (1, 'a11'),
69 (2, 'a22-new'),
70 (3, 'a33'),
71 ]
74def test_create_feature(root: gws.Root):
75 res = u.http.api(root, 'editGetFeature', dict(projectUid='A', modelUid='MODEL_PLAIN', featureUid='2'))
76 props = res.json['feature']
77 props['attributes'] = {'id': 777, 'name': 'NEW_NAME'}
78 props['isNew'] = True
80 res = u.http.api(root, 'editWriteFeature', dict(projectUid='A', modelUid='MODEL_PLAIN', feature=props))
81 assert res.status_code == 200
83 assert u.pg.rows('SELECT id,name FROM plain WHERE id=777') == [
84 (777, 'NEW_NAME'),
85 ]
88def test_delete_feature(root: gws.Root):
89 res = u.http.api(root, 'editGetFeature', dict(projectUid='A', modelUid='MODEL_PLAIN', featureUid='2'))
90 props = res.json['feature']
92 res = u.http.api(root, 'editDeleteFeature', dict(projectUid='A', modelUid='MODEL_PLAIN', feature=props))
93 assert res.status_code == 200
95 assert u.pg.rows('SELECT id,name FROM plain WHERE id=2') == []