Coverage for gws-app/gws/plugin/model_field/geometry/_test.py: 100%
41 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.base.shape
2import gws.test.util as u
3import gws.lib.crs
6@u.fixture(scope='module')
7def model():
8 u.pg.create('geometry_table', {'id': 'int primary key', 'geom': 'geometry(Point, 4326)'})
10 cfg = """
11 models+ {
12 uid "GEOMETRY_MODEL" type "postgres" tableName "geometry_table"
13 fields+ { name "id" type "integer" }
14 fields+ {
15 name "geom"
16 type geometry
17 geometryType "Point"
18 crs "EPSG:4326"
19 }
20 }
21 """
23 root = u.gws_root(cfg)
24 yield u.cast(gws.Model, root.get('GEOMETRY_MODEL'))
27def test_create(model: gws.Model):
28 mc = u.model_context()
30 point1 = gws.base.shape.from_xy(11, 22, gws.lib.crs.WGS84)
31 point2 = gws.base.shape.from_xy(33, 44, gws.lib.crs.WGS84)
33 f = u.feature(model, id=1, geom=point1)
34 model.create_feature(f, mc)
36 f = u.feature(model, id=2, geom=point2)
37 model.create_feature(f, mc)
39 features = model.get_features([1, 2], mc)
41 shape = gws.u.require(features[0].shape())
42 assert shape.to_ewkt(trim=True) == 'SRID=4326;POINT(11 22)'
44 shape = gws.u.require(features[1].shape())
45 assert shape.to_ewkt(trim=True) == 'SRID=4326;POINT(33 44)'
48def test_read(model: gws.Model):
49 mc = u.model_context()
51 point1 = gws.base.shape.from_xy(123, 456, gws.lib.crs.WGS84)
52 u.pg.insert('geometry_table', [{'id': 1, 'geom': point1.to_ewkb_hex()}])
54 features = model.get_features([1], mc)
55 assert len(features) == 1
57 shape = gws.u.require(features[0].shape())
58 assert shape.to_ewkt(trim=True) == 'SRID=4326;POINT(123 456)'
61def test_update(model: gws.Model):
62 mc = u.model_context()
64 point1 = gws.base.shape.from_xy(11, 22, gws.lib.crs.WGS84)
65 point2 = gws.base.shape.from_xy(77, 99, gws.lib.crs.WGS84)
67 f = u.feature(model, id=99, geom=point1)
68 model.create_feature(f, mc)
70 f = u.feature(model, id=99, geom=point2)
71 model.update_feature(f, mc)
73 features = model.get_features([99], mc)
75 shape = gws.u.require(features[0].shape())
76 assert shape.to_ewkt(trim=True) == 'SRID=4326;POINT(77 99)'