hooks/test/unittest_syncschema.py
changeset 9674 96549de9dd70
parent 9548 be001628edad
child 9675 8aabfefc8a81
equal deleted inserted replaced
9673:f5e77035f332 9674:96549de9dd70
    84         self._set_perms(concerne2_rdef_eid)
    84         self._set_perms(concerne2_rdef_eid)
    85         self.assertFalse('name' in schema['Societe2'].subject_relations())
    85         self.assertFalse('name' in schema['Societe2'].subject_relations())
    86         self.assertFalse('concerne2' in schema['Societe2'].subject_relations())
    86         self.assertFalse('concerne2' in schema['Societe2'].subject_relations())
    87         self.assertFalse(self.index_exists('Societe2', 'name'))
    87         self.assertFalse(self.index_exists('Societe2', 'name'))
    88         self.commit()
    88         self.commit()
    89         self.assertTrue('name' in schema['Societe2'].subject_relations())
    89         self.assertIn('name', schema['Societe2'].subject_relations())
    90         self.assertTrue('concerne2' in schema['Societe2'].subject_relations())
    90         self.assertIn('concerne2', schema['Societe2'].subject_relations())
    91         self.assertTrue(self.index_exists('Societe2', 'name'))
    91         self.assertTrue(self.index_exists('Societe2', 'name'))
    92         # now we should be able to insert and query Societe2
    92         # now we should be able to insert and query Societe2
    93         s2eid = self.execute('INSERT Societe2 X: X name "logilab"')[0][0]
    93         s2eid = self.execute('INSERT Societe2 X: X name "logilab"')[0][0]
    94         self.execute('Societe2 X WHERE X name "logilab"')
    94         self.execute('Societe2 X WHERE X name "logilab"')
    95         self.execute('SET X concerne2 X WHERE X name "logilab"')
    95         self.execute('SET X concerne2 X WHERE X name "logilab"')
   101                                'WHERE RT name "concerne2", E name "CWUser"')[0][0]
   101                                'WHERE RT name "concerne2", E name "CWUser"')[0][0]
   102         self._set_perms(rdefeid)
   102         self._set_perms(rdefeid)
   103         self.commit()
   103         self.commit()
   104         self.execute('DELETE CWRelation X WHERE X eid %(x)s', {'x': concerne2_rdef_eid})
   104         self.execute('DELETE CWRelation X WHERE X eid %(x)s', {'x': concerne2_rdef_eid})
   105         self.commit()
   105         self.commit()
   106         self.assertTrue('concerne2' in schema['CWUser'].subject_relations())
   106         self.assertIn('concerne2', schema['CWUser'].subject_relations())
   107         self.assertFalse('concerne2' in schema['Societe2'].subject_relations())
   107         self.assertFalse('concerne2' in schema['Societe2'].subject_relations())
   108         self.assertFalse(self.execute('Any X WHERE X concerne2 Y'))
   108         self.assertFalse(self.execute('Any X WHERE X concerne2 Y'))
   109         # schema should be cleaned on delete (after commit)
   109         # schema should be cleaned on delete (after commit)
   110         self.execute('DELETE CWEType X WHERE X name "Societe2"')
   110         self.execute('DELETE CWEType X WHERE X name "Societe2"')
   111         self.execute('DELETE CWRType X WHERE X name "concerne2"')
   111         self.execute('DELETE CWRType X WHERE X name "concerne2"')
   152         instanceof_etypes = [etype for etype, in self.execute('Any ETN WHERE X eid %s, X is_instance_of ET, ET name ETN' % seid)]
   152         instanceof_etypes = [etype for etype, in self.execute('Any ETN WHERE X eid %s, X is_instance_of ET, ET name ETN' % seid)]
   153         self.assertEqual(sorted(instanceof_etypes), ['BaseTransition', 'Transition'])
   153         self.assertEqual(sorted(instanceof_etypes), ['BaseTransition', 'Transition'])
   154         snames = [name for name, in self.execute('Any N WHERE S is BaseTransition, S name N')]
   154         snames = [name for name, in self.execute('Any N WHERE S is BaseTransition, S name N')]
   155         self.assertFalse('subdiv' in snames)
   155         self.assertFalse('subdiv' in snames)
   156         snames = [name for name, in self.execute('Any N WHERE S is_instance_of BaseTransition, S name N')]
   156         snames = [name for name, in self.execute('Any N WHERE S is_instance_of BaseTransition, S name N')]
   157         self.assertTrue('subdiv' in snames)
   157         self.assertIn('subdiv', snames)
   158 
   158 
   159 
   159 
   160     def test_perms_synchronization_1(self):
   160     def test_perms_synchronization_1(self):
   161         schema = self.repo.schema
   161         schema = self.repo.schema
   162         self.assertEqual(schema['CWUser'].get_groups('read'), set(('managers', 'users')))
   162         self.assertEqual(schema['CWUser'].get_groups('read'), set(('managers', 'users')))
   292                                {'default': Binary.zpickle('noname')})[0][0]
   292                                {'default': Binary.zpickle('noname')})[0][0]
   293         assert self.execute('SET X read_permission Y WHERE X eid %(x)s, Y name "managers"',
   293         assert self.execute('SET X read_permission Y WHERE X eid %(x)s, Y name "managers"',
   294                      {'x': attreid})
   294                      {'x': attreid})
   295         self.commit()
   295         self.commit()
   296         self.schema.rebuild_infered_relations()
   296         self.schema.rebuild_infered_relations()
   297         self.assertTrue('Transition' in self.schema['messageid'].subjects())
   297         self.assertIn('Transition', self.schema['messageid'].subjects())
   298         self.assertTrue('WorkflowTransition' in self.schema['messageid'].subjects())
   298         self.assertIn('WorkflowTransition', self.schema['messageid'].subjects())
   299         self.execute('Any X WHERE X is_instance_of BaseTransition, X messageid "hop"')
   299         self.execute('Any X WHERE X is_instance_of BaseTransition, X messageid "hop"')
   300 
   300 
   301     def test_change_fulltextindexed(self):
   301     def test_change_fulltextindexed(self):
   302         req = self.request()
   302         req = self.request()
   303         target = req.create_entity(u'Email', messageid=u'1234',
   303         target = req.create_entity(u'Email', messageid=u'1234',