server/test/unittest_migractions.py
branchtls-sprint
changeset 1398 5fe84a5f7035
parent 1263 01152fffd593
child 1787 71c143c0ada3
equal deleted inserted replaced
1397:6cbc7bc8ea6d 1398:5fe84a5f7035
   125     def test_add_entity_type(self):
   125     def test_add_entity_type(self):
   126         self.failIf('Folder2' in self.schema)
   126         self.failIf('Folder2' in self.schema)
   127         self.failIf('filed_under2' in self.schema)
   127         self.failIf('filed_under2' in self.schema)
   128         self.mh.cmd_add_entity_type('Folder2')
   128         self.mh.cmd_add_entity_type('Folder2')
   129         self.failUnless('Folder2' in self.schema)
   129         self.failUnless('Folder2' in self.schema)
   130         self.failUnless(self.execute('EEType X WHERE X name "Folder2"'))
   130         self.failUnless(self.execute('CWEType X WHERE X name "Folder2"'))
   131         self.failUnless('filed_under2' in self.schema)
   131         self.failUnless('filed_under2' in self.schema)
   132         self.failUnless(self.execute('ERType X WHERE X name "filed_under2"'))
   132         self.failUnless(self.execute('CWRType X WHERE X name "filed_under2"'))
   133         self.assertEquals(sorted(str(rs) for rs in self.schema['Folder2'].subject_relations()),
   133         self.assertEquals(sorted(str(rs) for rs in self.schema['Folder2'].subject_relations()),
   134                           ['created_by', 'creation_date', 'description', 'description_format', 'eid',
   134                           ['created_by', 'creation_date', 'description', 'description_format', 'eid',
   135                            'filed_under2', 'has_text', 'identity', 'is', 'is_instance_of',
   135                            'filed_under2', 'has_text', 'identity', 'is', 'is_instance_of',
   136                            'modification_date', 'name', 'owned_by'])
   136                            'modification_date', 'name', 'owned_by'])
   137         self.assertEquals([str(rs) for rs in self.schema['Folder2'].object_relations()],
   137         self.assertEquals([str(rs) for rs in self.schema['Folder2'].object_relations()],
   152         self.mh.cmd_add_transition(u'markasdone', 'Folder2', (todoeid,), doneeid)
   152         self.mh.cmd_add_transition(u'markasdone', 'Folder2', (todoeid,), doneeid)
   153         self.commit()
   153         self.commit()
   154         eschema = self.schema.eschema('Folder2')
   154         eschema = self.schema.eschema('Folder2')
   155         self.mh.cmd_drop_entity_type('Folder2')
   155         self.mh.cmd_drop_entity_type('Folder2')
   156         self.failIf('Folder2' in self.schema)
   156         self.failIf('Folder2' in self.schema)
   157         self.failIf(self.execute('EEType X WHERE X name "Folder2"'))
   157         self.failIf(self.execute('CWEType X WHERE X name "Folder2"'))
   158         # test automatic workflow deletion
   158         # test automatic workflow deletion
   159         self.failIf(self.execute('State X WHERE NOT X state_of ET'))
   159         self.failIf(self.execute('State X WHERE NOT X state_of ET'))
   160         self.failIf(self.execute('Transition X WHERE NOT X transition_of ET'))
   160         self.failIf(self.execute('Transition X WHERE NOT X transition_of ET'))
   161 
   161 
   162     def test_add_relation_type(self):
   162     def test_add_relation_type(self):
   177         self.failIf('filed_under2' in self.schema)
   177         self.failIf('filed_under2' in self.schema)
   178 
   178 
   179     def test_add_relation_definition(self):
   179     def test_add_relation_definition(self):
   180         self.mh.cmd_add_relation_definition('Societe', 'in_state', 'State')
   180         self.mh.cmd_add_relation_definition('Societe', 'in_state', 'State')
   181         self.assertEquals(sorted(self.schema['in_state'].subjects()),
   181         self.assertEquals(sorted(self.schema['in_state'].subjects()),
   182                           ['Affaire', 'Division', 'EUser', 'Note', 'Societe', 'SubDivision'])
   182                           ['Affaire', 'Division', 'CWUser', 'Note', 'Societe', 'SubDivision'])
   183         self.assertEquals(self.schema['in_state'].objects(), ('State',))
   183         self.assertEquals(self.schema['in_state'].objects(), ('State',))
   184 
   184 
   185     def test_add_relation_definition_nortype(self):
   185     def test_add_relation_definition_nortype(self):
   186         self.mh.cmd_add_relation_definition('Personne', 'concerne2', 'Affaire')
   186         self.mh.cmd_add_relation_definition('Personne', 'concerne2', 'Affaire')
   187         self.assertEquals(self.schema['concerne2'].subjects(),
   187         self.assertEquals(self.schema['concerne2'].subjects(),
   208     def test_drop_relation_definition2(self):
   208     def test_drop_relation_definition2(self):
   209         self.failUnless('evaluee' in self.schema)
   209         self.failUnless('evaluee' in self.schema)
   210         self.mh.cmd_drop_relation_definition('Personne', 'evaluee', 'Note')
   210         self.mh.cmd_drop_relation_definition('Personne', 'evaluee', 'Note')
   211         self.failUnless('evaluee' in self.schema)
   211         self.failUnless('evaluee' in self.schema)
   212         self.assertEquals(sorted(self.schema['evaluee'].subjects()),
   212         self.assertEquals(sorted(self.schema['evaluee'].subjects()),
   213                           ['Division', 'EUser', 'Societe', 'SubDivision'])
   213                           ['Division', 'CWUser', 'Societe', 'SubDivision'])
   214         self.assertEquals(sorted(self.schema['evaluee'].objects()),
   214         self.assertEquals(sorted(self.schema['evaluee'].objects()),
   215                           ['Note'])
   215                           ['Note'])
   216 
   216 
   217     def test_rename_relation(self):
   217     def test_rename_relation(self):
   218         self.skip('implement me')
   218         self.skip('implement me')
   255 #         self.assertEquals([rs.type for rs in migrschema['Personne'].ordered_relations() if rs.is_final()],
   255 #         self.assertEquals([rs.type for rs in migrschema['Personne'].ordered_relations() if rs.is_final()],
   256 #                           expected)
   256 #                           expected)
   257         migrschema['Personne'].description = 'blabla bla'
   257         migrschema['Personne'].description = 'blabla bla'
   258         migrschema['titre'].description = 'usually a title' 
   258         migrschema['titre'].description = 'usually a title' 
   259         migrschema['titre']._rproperties[('Personne', 'String')]['description'] = 'title for this person'
   259         migrschema['titre']._rproperties[('Personne', 'String')]['description'] = 'title for this person'
   260 #         rinorderbefore = cursor.execute('Any O,N WHERE X is EFRDef, X relation_type RT, RT name N,'
   260 #         rinorderbefore = cursor.execute('Any O,N WHERE X is CWAttribute, X relation_type RT, RT name N,'
   261 #                                         'X from_entity FE, FE name "Personne",'
   261 #                                         'X from_entity FE, FE name "Personne",'
   262 #                                         'X ordernum O ORDERBY O')
   262 #                                         'X ordernum O ORDERBY O')
   263 #         expected = [u'creation_date', u'modification_date', u'nom', u'prenom',
   263 #         expected = [u'creation_date', u'modification_date', u'nom', u'prenom',
   264 #                     u'sexe', u'promo', u'titre', u'adel', u'ass', u'web', u'tel',
   264 #                     u'sexe', u'promo', u'titre', u'adel', u'ass', u'web', u'tel',
   265 #                     u'fax', u'datenaiss', u'test', u'description']
   265 #                     u'fax', u'datenaiss', u'test', u'description']
   277                           'title for this person')
   277                           'title for this person')
   278         # skip "sexe" and "description" since they aren't in the migration
   278         # skip "sexe" and "description" since they aren't in the migration
   279         # schema and so behaviour is undefined
   279         # schema and so behaviour is undefined
   280         # "civility" is also skipped since it may have been added by
   280         # "civility" is also skipped since it may have been added by
   281         # test_rename_attribut :o/
   281         # test_rename_attribut :o/
   282         rinorder = [n for n, in cursor.execute('Any N ORDERBY O WHERE X is EFRDef, X relation_type RT, RT name N,'
   282         rinorder = [n for n, in cursor.execute('Any N ORDERBY O WHERE X is CWAttribute, X relation_type RT, RT name N,'
   283                                                'X from_entity FE, FE name "Personne",'
   283                                                'X from_entity FE, FE name "Personne",'
   284                                                'X ordernum O') if n not in ('sexe', 'description', 'civility')]
   284                                                'X ordernum O') if n not in ('sexe', 'description', 'civility')]
   285         expected = [u'nom', u'prenom', u'promo', u'ass', u'adel', u'titre',
   285         expected = [u'nom', u'prenom', u'promo', u'ass', u'adel', u'titre',
   286                     u'web', u'tel', u'fax', u'datenaiss', u'test', u'firstname',
   286                     u'web', u'tel', u'fax', u'datenaiss', u'test', u'firstname',
   287                     u'creation_date', u'modification_date']
   287                     u'creation_date', u'modification_date']
   336         self.assertEquals(len(cursor.execute('RQLExpression X')), nbrqlexpr_start + 1 + 2) 
   336         self.assertEquals(len(cursor.execute('RQLExpression X')), nbrqlexpr_start + 1 + 2) 
   337                           
   337                           
   338         self.mh.rollback()
   338         self.mh.rollback()
   339 
   339 
   340     def _erqlexpr_rset(self, action, ertype):
   340     def _erqlexpr_rset(self, action, ertype):
   341         rql = 'RQLExpression X WHERE ET is EEType, ET %s_permission X, ET name %%(name)s' % action
   341         rql = 'RQLExpression X WHERE ET is CWEType, ET %s_permission X, ET name %%(name)s' % action
   342         return self.mh.rqlcursor.execute(rql, {'name': ertype})
   342         return self.mh.rqlcursor.execute(rql, {'name': ertype})
   343     def _erqlexpr_entity(self, action, ertype):
   343     def _erqlexpr_entity(self, action, ertype):
   344         rset = self._erqlexpr_rset(action, ertype)
   344         rset = self._erqlexpr_rset(action, ertype)
   345         self.assertEquals(len(rset), 1)
   345         self.assertEquals(len(rset), 1)
   346         return rset.get_entity(0, 0)
   346         return rset.get_entity(0, 0)
   347     def _rrqlexpr_rset(self, action, ertype):
   347     def _rrqlexpr_rset(self, action, ertype):
   348         rql = 'RQLExpression X WHERE ET is ERType, ET %s_permission X, ET name %%(name)s' % action
   348         rql = 'RQLExpression X WHERE ET is CWRType, ET %s_permission X, ET name %%(name)s' % action
   349         return self.mh.rqlcursor.execute(rql, {'name': ertype})
   349         return self.mh.rqlcursor.execute(rql, {'name': ertype})
   350     def _rrqlexpr_entity(self, action, ertype):
   350     def _rrqlexpr_entity(self, action, ertype):
   351         rset = self._rrqlexpr_rset(action, ertype)
   351         rset = self._rrqlexpr_rset(action, ertype)
   352         self.assertEquals(len(rset), 1)
   352         self.assertEquals(len(rset), 1)
   353         return rset.get_entity(0, 0)
   353         return rset.get_entity(0, 0)
   354     
   354     
   355     def test_set_size_constraint(self):
   355     def test_set_size_constraint(self):
   356         # existing previous value
   356         # existing previous value
   357         try:
   357         try:
   358             self.mh.cmd_set_size_constraint('EEType', 'name', 128)
   358             self.mh.cmd_set_size_constraint('CWEType', 'name', 128)
   359         finally:
   359         finally:
   360             self.mh.cmd_set_size_constraint('EEType', 'name', 64)
   360             self.mh.cmd_set_size_constraint('CWEType', 'name', 64)
   361         # non existing previous value
   361         # non existing previous value
   362         try:
   362         try:
   363             self.mh.cmd_set_size_constraint('EEType', 'description', 256)
   363             self.mh.cmd_set_size_constraint('CWEType', 'description', 256)
   364         finally:
   364         finally:
   365             self.mh.cmd_set_size_constraint('EEType', 'description', None)
   365             self.mh.cmd_set_size_constraint('CWEType', 'description', None)
   366 
   366 
   367     def test_add_remove_cube(self):
   367     def test_add_remove_cube(self):
   368         cubes = set(self.config.cubes())
   368         cubes = set(self.config.cubes())
   369         schema = self.repo.schema
   369         schema = self.repo.schema
   370         self.assertEquals(sorted(schema['see_also']._rproperties.keys()),
   370         self.assertEquals(sorted(schema['see_also']._rproperties.keys()),