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()), |