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

1import gws 

2import gws.test.util as u 

3import gws.lib.datetimex as dtx 

4 

5 

6@u.fixture(scope='module') 

7def model(): 

8 u.pg.create('t', {'id': 'int primary key', 'dat': 'date'}) 

9 

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 """ 

17 

18 root = u.gws_root(cfg) 

19 yield u.cast(gws.Model, root.get('TEST_MODEL')) 

20 

21 

22def test_create(model: gws.Model): 

23 mc = u.model_context() 

24 

25 d = dtx.new(2000, 2, 3) 

26 

27 f = u.feature(model, id=1, dat=d) 

28 model.create_feature(f, mc) 

29 

30 fs = model.get_features([1], mc) 

31 assert dtx.to_iso_date_string(fs[0].get('dat')) == dtx.to_iso_date_string(d) 

32 

33 

34def test_read(model: gws.Model): 

35 mc = u.model_context() 

36 

37 ds = ['2000-02-03', '2001-12-13'] 

38 u.pg.insert('t', [{'id': 1, 'dat': ds[0]}, {'id': 2, 'dat': ds[1]}]) 

39 

40 fs = model.get_features([1, 2], mc) 

41 

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 

44 

45 

46def test_update(model: gws.Model): 

47 mc = u.model_context() 

48 

49 ds = ['2000-02-03', '2001-12-13'] 

50 u.pg.insert('t', [{'id': 1, 'dat': ds[0]}, {'id': 2, 'dat': ds[1]}]) 

51 

52 f = u.feature(model, id=1, dat=dtx.new(2009, 9, 19)) 

53 model.update_feature(f, mc) 

54 

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]]