64 class NoHookRQLObjectStoreTC(RQLObjectStoreTC): |
64 class NoHookRQLObjectStoreTC(RQLObjectStoreTC): |
65 store_impl = stores.NoHookRQLObjectStore |
65 store_impl = stores.NoHookRQLObjectStore |
66 |
66 |
67 |
67 |
68 class MetaGeneratorTC(CubicWebTC): |
68 class MetaGeneratorTC(CubicWebTC): |
|
69 metagenerator_impl = stores.MetaGenerator |
|
70 _etype_rels = staticmethod(lambda x: x.etype_rels) |
69 |
71 |
70 def test_dont_generate_relation_to_internal_manager(self): |
72 def test_dont_generate_relation_to_internal_manager(self): |
71 with self.admin_access.repo_cnx() as cnx: |
73 with self.admin_access.repo_cnx() as cnx: |
72 metagen = stores.MetaGenerator(cnx) |
74 metagen = self.metagenerator_impl(cnx) |
73 self.assertIn('created_by', metagen.etype_rels) |
75 self.assertIn('created_by', self._etype_rels(metagen)) |
74 self.assertIn('owned_by', metagen.etype_rels) |
76 self.assertIn('owned_by', self._etype_rels(metagen)) |
75 with self.repo.internal_cnx() as cnx: |
77 with self.repo.internal_cnx() as cnx: |
76 metagen = stores.MetaGenerator(cnx) |
78 metagen = self.metagenerator_impl(cnx) |
77 self.assertNotIn('created_by', metagen.etype_rels) |
79 self.assertNotIn('created_by', self._etype_rels(metagen)) |
78 self.assertNotIn('owned_by', metagen.etype_rels) |
80 self.assertNotIn('owned_by', self._etype_rels(metagen)) |
79 |
81 |
80 def test_dont_generate_specified_values(self): |
82 def test_dont_generate_specified_values(self): |
81 with self.admin_access.repo_cnx() as cnx: |
83 with self.admin_access.repo_cnx() as cnx: |
82 metagen = stores.MetaGenerator(cnx) |
84 metagen = self.metagenerator_impl(cnx) |
83 # hijack gen_modification_date to ensure we don't go through it |
85 # hijack gen_modification_date to ensure we don't go through it |
84 metagen.gen_modification_date = None |
86 metagen.gen_modification_date = None |
85 md = DT.datetime.now(pytz.utc) - DT.timedelta(days=1) |
87 md = DT.datetime.now(pytz.utc) - DT.timedelta(days=1) |
86 entity, rels = metagen.base_etype_dicts('CWUser') |
88 entity, rels = metagen.base_etype_dicts('CWUser') |
87 entity.cw_edited.update(dict(modification_date=md)) |
89 entity.cw_edited.update(dict(modification_date=md)) |
88 with cnx.ensure_cnx_set: |
90 with cnx.ensure_cnx_set: |
89 metagen.init_entity(entity) |
91 metagen.init_entity(entity) |
90 self.assertEqual(entity.cw_edited['modification_date'], md) |
92 self.assertEqual(entity.cw_edited['modification_date'], md) |
91 |
93 |
92 |
94 |
|
95 class MetadataGeneratorWrapperTC(MetaGeneratorTC): |
|
96 @staticmethod |
|
97 def metagenerator_impl(cnx): |
|
98 return stores._MetaGeneratorBWCompatWrapper(stores.MetadataGenerator(cnx)) |
|
99 |
|
100 _etype_rels = staticmethod(lambda x: x._mdgen._etype_rels) |
|
101 |
|
102 |
|
103 class MetadataGeneratorTC(CubicWebTC): |
|
104 |
|
105 def test_dont_generate_relation_to_internal_manager(self): |
|
106 with self.admin_access.repo_cnx() as cnx: |
|
107 metagen = stores.MetadataGenerator(cnx) |
|
108 self.assertIn('created_by', metagen.etype_rels('CWUser')) |
|
109 self.assertIn('owned_by', metagen.etype_rels('CWUser')) |
|
110 with self.repo.internal_cnx() as cnx: |
|
111 metagen = stores.MetadataGenerator(cnx) |
|
112 self.assertNotIn('created_by', metagen.etype_rels('CWUser')) |
|
113 self.assertNotIn('owned_by', metagen.etype_rels('CWUser')) |
|
114 |
|
115 def test_dont_generate_specified_values(self): |
|
116 with self.admin_access.repo_cnx() as cnx: |
|
117 metagen = stores.MetadataGenerator(cnx) |
|
118 # hijack gen_modification_date to ensure we don't go through it |
|
119 metagen.gen_modification_date = None |
|
120 md = DT.datetime.now(pytz.utc) - DT.timedelta(days=1) |
|
121 attrs = metagen.base_etype_attrs('CWUser') |
|
122 attrs.update(dict(modification_date=md)) |
|
123 with cnx.ensure_cnx_set: |
|
124 metagen.init_entity_attrs('CWUser', 1, attrs) |
|
125 self.assertEqual(attrs['modification_date'], md) |
|
126 |
|
127 |
93 if __name__ == '__main__': |
128 if __name__ == '__main__': |
94 from logilab.common.testlib import unittest_main |
129 from logilab.common.testlib import unittest_main |
95 unittest_main() |
130 unittest_main() |