server/test/unittest_migractions.py
changeset 4100 ca9e014012ef
parent 3720 5376aaadd16b
child 4103 dc04bede3502
equal deleted inserted replaced
4099:59ff385f7348 4100:ca9e014012ef
    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')]))