Coverage for gws-app/gws/plugin/model_field/date/_test.py: 100%
31 statements
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-16 22:59 +0200
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-16 22:59 +0200
1import gws
2import gws.test.util as u
3import gws.lib.datetimex as dtx
6@u.fixture(scope='module')
7def model():
8 u.pg.create('t', {'id': 'int primary key', 'dat': 'date'})
10 cfg = """
11 models+ {
12 uid "TEST_MODEL" type "postgres" tableName "t"
13 fields+ { name "id" type "integer" }
14 fields+ { name "dat" type "date" }
15 }
16 """
18 root = u.gws_root(cfg)
19 yield u.cast(gws.Model, root.get('TEST_MODEL'))
22def test_create(model: gws.Model):
23 mc = u.model_context()
25 d = dtx.new(2000, 2, 3)
27 f = u.feature(model, id=1, dat=d)
28 model.create_feature(f, mc)
30 fs = model.get_features([1], mc)
31 assert dtx.to_iso_date_string(fs[0].get('dat')) == dtx.to_iso_date_string(d)
34def test_read(model: gws.Model):
35 mc = u.model_context()
37 ds = ['2000-02-03', '2001-12-13']
38 u.pg.insert('t', [{'id': 1, 'dat': ds[0]}, {'id': 2, 'dat': ds[1]}])
40 fs = model.get_features([1, 2], mc)
42 assert [dtx.is_datetime(f) for f in fs]
43 assert [dtx.to_iso_date_string(f.get('dat')) for f in fs] == ds
46def test_update(model: gws.Model):
47 mc = u.model_context()
49 ds = ['2000-02-03', '2001-12-13']
50 u.pg.insert('t', [{'id': 1, 'dat': ds[0]}, {'id': 2, 'dat': ds[1]}])
52 f = u.feature(model, id=1, dat=dtx.new(2009, 9, 19))
53 model.update_feature(f, mc)
55 fs = model.get_features([1, 2], mc)
56 assert [dtx.to_iso_date_string(f.get('dat')) for f in fs] == ['2009-09-19', ds[1]]