cubicweb/dataimport/test/test_stores.py
changeset 11309 31bf3254be69
parent 11308 df75fe529ba8
child 11327 901243e41152
equal deleted inserted replaced
11308:df75fe529ba8 11309:31bf3254be69
    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()