53 assert self.session is self.mh.session, (self.session.id, self.mh.session.id) |
53 assert self.session is self.mh.session, (self.session.id, self.mh.session.id) |
54 |
54 |
55 |
55 |
56 def test_add_attribute_int(self): |
56 def test_add_attribute_int(self): |
57 self.failIf('whatever' in self.schema) |
57 self.failIf('whatever' in self.schema) |
58 self.add_entity('Note') |
58 self.request().create_entity('Note') |
59 self.commit() |
59 self.commit() |
60 orderdict = dict(self.mh.rqlexec('Any RTN, O WHERE X name "Note", RDEF from_entity X, ' |
60 orderdict = dict(self.mh.rqlexec('Any RTN, O WHERE X name "Note", RDEF from_entity X, ' |
61 'RDEF relation_type RT, RDEF ordernum O, RT name RTN')) |
61 'RDEF relation_type RT, RDEF ordernum O, RT name RTN')) |
62 self.mh.cmd_add_attribute('Note', 'whatever') |
62 self.mh.cmd_add_attribute('Note', 'whatever') |
63 self.failUnless('whatever' in self.schema) |
63 self.failUnless('whatever' in self.schema) |
66 self.assertEquals(self.schema['Note'].default('whatever'), 2) |
66 self.assertEquals(self.schema['Note'].default('whatever'), 2) |
67 note = self.execute('Note X').get_entity(0, 0) |
67 note = self.execute('Note X').get_entity(0, 0) |
68 self.assertEquals(note.whatever, 2) |
68 self.assertEquals(note.whatever, 2) |
69 orderdict2 = dict(self.mh.rqlexec('Any RTN, O WHERE X name "Note", RDEF from_entity X, ' |
69 orderdict2 = dict(self.mh.rqlexec('Any RTN, O WHERE X name "Note", RDEF from_entity X, ' |
70 'RDEF relation_type RT, RDEF ordernum O, RT name RTN')) |
70 'RDEF relation_type RT, RDEF ordernum O, RT name RTN')) |
71 whateverorder = migrschema['whatever'].rproperty('Note', 'Int', 'order') |
71 whateverorder = migrschema['whatever'].rdef('Note', 'Int').order |
72 for k, v in orderdict.iteritems(): |
72 for k, v in orderdict.iteritems(): |
73 if v >= whateverorder: |
73 if v >= whateverorder: |
74 orderdict[k] = v+1 |
74 orderdict[k] = v+1 |
75 orderdict['whatever'] = whateverorder |
75 orderdict['whatever'] = whateverorder |
76 self.assertDictEquals(orderdict, orderdict2) |
76 self.assertDictEquals(orderdict, orderdict2) |
192 self.mh.cmd_add_relation_definition('Personne', 'concerne2', 'Affaire') |
192 self.mh.cmd_add_relation_definition('Personne', 'concerne2', 'Affaire') |
193 self.assertEquals(self.schema['concerne2'].subjects(), |
193 self.assertEquals(self.schema['concerne2'].subjects(), |
194 ('Personne',)) |
194 ('Personne',)) |
195 self.assertEquals(self.schema['concerne2'].objects(), |
195 self.assertEquals(self.schema['concerne2'].objects(), |
196 ('Affaire', )) |
196 ('Affaire', )) |
197 self.assertEquals(self.schema['concerne2'].rproperty('Personne', 'Affaire', 'cardinality'), |
197 self.assertEquals(self.schema['concerne2'].rdef('Personne', 'Affaire').cardinality, |
198 '1*') |
198 '1*') |
199 self.mh.cmd_add_relation_definition('Personne', 'concerne2', 'Note') |
199 self.mh.cmd_add_relation_definition('Personne', 'concerne2', 'Note') |
200 self.assertEquals(sorted(self.schema['concerne2'].objects()), ['Affaire', 'Note']) |
200 self.assertEquals(sorted(self.schema['concerne2'].objects()), ['Affaire', 'Note']) |
201 self.mh.create_entity('Personne', nom=u'tot') |
201 self.mh.create_entity('Personne', nom=u'tot') |
202 self.mh.create_entity('Affaire') |
202 self.mh.create_entity('Affaire') |
252 def test_rename_relation(self): |
252 def test_rename_relation(self): |
253 self.skip('implement me') |
253 self.skip('implement me') |
254 |
254 |
255 def test_change_relation_props_non_final(self): |
255 def test_change_relation_props_non_final(self): |
256 rschema = self.schema['concerne'] |
256 rschema = self.schema['concerne'] |
257 card = rschema.rproperty('Affaire', 'Societe', 'cardinality') |
257 card = rschema.rdef('Affaire', 'Societe').cardinality |
258 self.assertEquals(card, '**') |
258 self.assertEquals(card, '**') |
259 try: |
259 try: |
260 self.mh.cmd_change_relation_props('Affaire', 'concerne', 'Societe', |
260 self.mh.cmd_change_relation_props('Affaire', 'concerne', 'Societe', |
261 cardinality='?*') |
261 cardinality='?*') |
262 card = rschema.rproperty('Affaire', 'Societe', 'cardinality') |
262 card = rschema.rdef('Affaire', 'Societe').cardinality |
263 self.assertEquals(card, '?*') |
263 self.assertEquals(card, '?*') |
264 finally: |
264 finally: |
265 self.mh.cmd_change_relation_props('Affaire', 'concerne', 'Societe', |
265 self.mh.cmd_change_relation_props('Affaire', 'concerne', 'Societe', |
266 cardinality='**') |
266 cardinality='**') |
267 |
267 |
268 def test_change_relation_props_final(self): |
268 def test_change_relation_props_final(self): |
269 rschema = self.schema['adel'] |
269 rschema = self.schema['adel'] |
270 card = rschema.rproperty('Personne', 'String', 'fulltextindexed') |
270 card = rschema.rdef('Personne', 'String').fulltextindexed |
271 self.assertEquals(card, False) |
271 self.assertEquals(card, False) |
272 try: |
272 try: |
273 self.mh.cmd_change_relation_props('Personne', 'adel', 'String', |
273 self.mh.cmd_change_relation_props('Personne', 'adel', 'String', |
274 fulltextindexed=True) |
274 fulltextindexed=True) |
275 card = rschema.rproperty('Personne', 'String', 'fulltextindexed') |
275 card = rschema.rdef('Personne', 'String').fulltextindexed |
276 self.assertEquals(card, True) |
276 self.assertEquals(card, True) |
277 finally: |
277 finally: |
278 self.mh.cmd_change_relation_props('Personne', 'adel', 'String', |
278 self.mh.cmd_change_relation_props('Personne', 'adel', 'String', |
279 fulltextindexed=False) |
279 fulltextindexed=False) |
280 |
280 |
281 def test_sync_schema_props_perms(self): |
281 def test_sync_schema_props_perms(self): |
282 cursor = self.mh.session |
282 cursor = self.mh.session |
|
283 cursor.set_pool() |
283 nbrqlexpr_start = len(cursor.execute('RQLExpression X')) |
284 nbrqlexpr_start = len(cursor.execute('RQLExpression X')) |
284 migrschema['titre']._rproperties[('Personne', 'String')]['order'] = 7 |
285 migrschema['titre'].rdefs[('Personne', 'String')].order = 7 |
285 migrschema['adel']._rproperties[('Personne', 'String')]['order'] = 6 |
286 migrschema['adel'].rdefs[('Personne', 'String')].order = 6 |
286 migrschema['ass']._rproperties[('Personne', 'String')]['order'] = 5 |
287 migrschema['ass'].rdefs[('Personne', 'String')].order = 5 |
287 migrschema['Personne'].description = 'blabla bla' |
288 migrschema['Personne'].description = 'blabla bla' |
288 migrschema['titre'].description = 'usually a title' |
289 migrschema['titre'].description = 'usually a title' |
289 migrschema['titre']._rproperties[('Personne', 'String')]['description'] = 'title for this person' |
290 migrschema['titre'].rdefs[('Personne', 'String')]['description'] = 'title for this person' |
290 self.mh.cmd_sync_schema_props_perms(commit=False) |
291 self.mh.cmd_sync_schema_props_perms(commit=False) |
291 |
292 |
292 self.assertEquals(cursor.execute('Any D WHERE X name "Personne", X description D')[0][0], |
293 self.assertEquals(cursor.execute('Any D WHERE X name "Personne", X description D')[0][0], |
293 'blabla bla') |
294 'blabla bla') |
294 self.assertEquals(cursor.execute('Any D WHERE X name "titre", X description D')[0][0], |
295 self.assertEquals(cursor.execute('Any D WHERE X name "titre", X description D')[0][0], |
384 self.mh.cmd_set_size_constraint('CWEType', 'description', None) |
385 self.mh.cmd_set_size_constraint('CWEType', 'description', None) |
385 |
386 |
386 def test_add_remove_cube_and_deps(self): |
387 def test_add_remove_cube_and_deps(self): |
387 cubes = set(self.config.cubes()) |
388 cubes = set(self.config.cubes()) |
388 schema = self.repo.schema |
389 schema = self.repo.schema |
389 self.assertEquals(sorted((str(s), str(o)) for s, o in schema['see_also']._rproperties.keys()), |
390 self.assertEquals(sorted((str(s), str(o)) for s, o in schema['see_also'].rdefs.keys()), |
390 sorted([('EmailThread', 'EmailThread'), ('Folder', 'Folder'), |
391 sorted([('EmailThread', 'EmailThread'), ('Folder', 'Folder'), |
391 ('Bookmark', 'Bookmark'), ('Bookmark', 'Note'), |
392 ('Bookmark', 'Bookmark'), ('Bookmark', 'Note'), |
392 ('Note', 'Note'), ('Note', 'Bookmark')])) |
393 ('Note', 'Note'), ('Note', 'Bookmark')])) |
393 try: |
394 try: |
394 try: |
395 try: |
399 self.failIf('file' in self.config.cubes()) |
400 self.failIf('file' in self.config.cubes()) |
400 self.failIf(self.config.cube_dir('file') in self.config.cubes_path()) |
401 self.failIf(self.config.cube_dir('file') in self.config.cubes_path()) |
401 for ertype in ('Email', 'EmailThread', 'EmailPart', 'File', 'Image', |
402 for ertype in ('Email', 'EmailThread', 'EmailPart', 'File', 'Image', |
402 'sender', 'in_thread', 'reply_to', 'data_format'): |
403 'sender', 'in_thread', 'reply_to', 'data_format'): |
403 self.failIf(ertype in schema, ertype) |
404 self.failIf(ertype in schema, ertype) |
404 self.assertEquals(sorted(schema['see_also']._rproperties.keys()), |
405 self.assertEquals(sorted(schema['see_also'].rdefs.keys()), |
405 sorted([('Folder', 'Folder'), |
406 sorted([('Folder', 'Folder'), |
406 ('Bookmark', 'Bookmark'), |
407 ('Bookmark', 'Bookmark'), |
407 ('Bookmark', 'Note'), |
408 ('Bookmark', 'Note'), |
408 ('Note', 'Note'), |
409 ('Note', 'Note'), |
409 ('Note', 'Bookmark')])) |
410 ('Note', 'Bookmark')])) |
422 self.failUnless('file' in self.config.cubes()) |
423 self.failUnless('file' in self.config.cubes()) |
423 self.failUnless(self.config.cube_dir('file') in self.config.cubes_path()) |
424 self.failUnless(self.config.cube_dir('file') in self.config.cubes_path()) |
424 for ertype in ('Email', 'EmailThread', 'EmailPart', 'File', 'Image', |
425 for ertype in ('Email', 'EmailThread', 'EmailPart', 'File', 'Image', |
425 'sender', 'in_thread', 'reply_to', 'data_format'): |
426 'sender', 'in_thread', 'reply_to', 'data_format'): |
426 self.failUnless(ertype in schema, ertype) |
427 self.failUnless(ertype in schema, ertype) |
427 self.assertEquals(sorted(schema['see_also']._rproperties.keys()), |
428 self.assertEquals(sorted(schema['see_also'].rdefs.keys()), |
428 sorted([('EmailThread', 'EmailThread'), ('Folder', 'Folder'), |
429 sorted([('EmailThread', 'EmailThread'), ('Folder', 'Folder'), |
429 ('Bookmark', 'Bookmark'), |
430 ('Bookmark', 'Bookmark'), |
430 ('Bookmark', 'Note'), |
431 ('Bookmark', 'Note'), |
431 ('Note', 'Note'), |
432 ('Note', 'Note'), |
432 ('Note', 'Bookmark')])) |
433 ('Note', 'Bookmark')])) |