server/test/unittest_migractions.py
changeset 47 54087a269bdd
parent 0 b97547f5f1fa
child 439 7cb7cb318983
equal deleted inserted replaced
46:0155942b5c56 47:54087a269bdd
   132                            'filed_under2', 'has_text', 'identity', 'is', 'is_instance_of',
   132                            'filed_under2', 'has_text', 'identity', 'is', 'is_instance_of',
   133                            'modification_date', 'name', 'owned_by'])
   133                            'modification_date', 'name', 'owned_by'])
   134         self.assertEquals([str(rs) for rs in self.schema['Folder2'].object_relations()],
   134         self.assertEquals([str(rs) for rs in self.schema['Folder2'].object_relations()],
   135                           ['filed_under2', 'identity'])
   135                           ['filed_under2', 'identity'])
   136         self.assertEquals(sorted(str(e) for e in self.schema['filed_under2'].subjects()),
   136         self.assertEquals(sorted(str(e) for e in self.schema['filed_under2'].subjects()),
   137                           ['Affaire', 'Card', 'Division', 'Email', 'EmailThread', 'File', 'Folder2',
   137                           ['Affaire', 'Card', 'Division', 'ECache', 'Email', 'EmailThread', 'File', 
   138                            'Image', 'Note', 'Personne', 'Societe', 'SubDivision'])
   138                            'Folder2', 'Image', 'Note', 'Personne', 'Societe', 'SubDivision'])
   139         self.assertEquals(self.schema['filed_under2'].objects(), ('Folder2',))
   139         self.assertEquals(self.schema['filed_under2'].objects(), ('Folder2',))
   140         eschema = self.schema.eschema('Folder2')
   140         eschema = self.schema.eschema('Folder2')
   141         for cstr in eschema.constraints('name'):
   141         for cstr in eschema.constraints('name'):
   142             self.failUnless(hasattr(cstr, 'eid'))
   142             self.failUnless(hasattr(cstr, 'eid'))
   143 
   143 
   159     def test_add_relation_type(self):
   159     def test_add_relation_type(self):
   160         self.mh.cmd_add_entity_type('Folder2', auto=False)
   160         self.mh.cmd_add_entity_type('Folder2', auto=False)
   161         self.mh.cmd_add_relation_type('filed_under2')
   161         self.mh.cmd_add_relation_type('filed_under2')
   162         self.failUnless('filed_under2' in self.schema)
   162         self.failUnless('filed_under2' in self.schema)
   163         self.assertEquals(sorted(str(e) for e in self.schema['filed_under2'].subjects()),
   163         self.assertEquals(sorted(str(e) for e in self.schema['filed_under2'].subjects()),
   164                           ['Affaire', 'Card', 'Division', 'Email', 'EmailThread', 'File', 'Folder2',
   164                           ['Affaire', 'Card', 'Division', 'ECache', 'Email', 'EmailThread', 'File', 
   165                            'Image', 'Note', 'Personne', 'Societe', 'SubDivision'])
   165                            'Folder2', 'Image', 'Note', 'Personne', 'Societe', 'SubDivision'])
   166         self.assertEquals(self.schema['filed_under2'].objects(), ('Folder2',))
   166         self.assertEquals(self.schema['filed_under2'].objects(), ('Folder2',))
   167 
   167 
   168 
   168 
   169     def test_drop_relation_type(self):
   169     def test_drop_relation_type(self):
   170         self.mh.cmd_add_entity_type('Folder2', auto=False)
   170         self.mh.cmd_add_entity_type('Folder2', auto=False)
   363 
   363 
   364     def test_add_remove_cube(self):
   364     def test_add_remove_cube(self):
   365         cubes = set(self.config.cubes())
   365         cubes = set(self.config.cubes())
   366         schema = self.repo.schema
   366         schema = self.repo.schema
   367         try:
   367         try:
   368             self.mh.cmd_remove_cube('eemail')
   368             self.mh.cmd_remove_cube('email')
   369             # efile was there because it's an eemail dependancy, should have been removed
   369             # file was there because it's an email dependancy, should have been removed
   370             cubes.remove('eemail')
   370             cubes.remove('email')
   371             cubes.remove('efile')
   371             cubes.remove('file')
   372             self.assertEquals(set(self.config.cubes()), cubes)
   372             self.assertEquals(set(self.config.cubes()), cubes)
   373             for ertype in ('Email', 'EmailThread', 'EmailPart', 'File', 'Image', 
   373             for ertype in ('Email', 'EmailThread', 'EmailPart', 'File', 'Image', 
   374                            'sender', 'in_thread', 'reply_to', 'data_format'):
   374                            'sender', 'in_thread', 'reply_to', 'data_format'):
   375                 self.failIf(ertype in schema, ertype)
   375                 self.failIf(ertype in schema, ertype)
   376             self.assertEquals(sorted(schema['see_also']._rproperties.keys()),
   376             self.assertEquals(sorted(schema['see_also']._rproperties.keys()),
   377                               [('Folder', 'Folder')])
   377                               [('Folder', 'Folder')])
   378             self.assertEquals(schema['see_also'].subjects(), ('Folder',))
   378             self.assertEquals(schema['see_also'].subjects(), ('Folder',))
   379             self.assertEquals(schema['see_also'].objects(), ('Folder',))
   379             self.assertEquals(schema['see_also'].objects(), ('Folder',))
   380             self.assertEquals(self.execute('Any X WHERE X pkey "system.version.eemail"').rowcount, 0)
   380             self.assertEquals(self.execute('Any X WHERE X pkey "system.version.email"').rowcount, 0)
   381             self.assertEquals(self.execute('Any X WHERE X pkey "system.version.efile"').rowcount, 0)
   381             self.assertEquals(self.execute('Any X WHERE X pkey "system.version.file"').rowcount, 0)
   382             self.failIf('eemail' in self.config.cubes())
   382             self.failIf('email' in self.config.cubes())
   383             self.failIf('efile' in self.config.cubes())
   383             self.failIf('file' in self.config.cubes())
   384         finally:
   384         finally:
   385             self.mh.cmd_add_cube('eemail')
   385             self.mh.cmd_add_cube('email')
   386             cubes.add('eemail')
   386             cubes.add('email')
   387             cubes.add('efile')
   387             cubes.add('file')
   388             self.assertEquals(set(self.config.cubes()), cubes)
   388             self.assertEquals(set(self.config.cubes()), cubes)
   389             for ertype in ('Email', 'EmailThread', 'EmailPart', 'File', 'Image', 
   389             for ertype in ('Email', 'EmailThread', 'EmailPart', 'File', 'Image', 
   390                            'sender', 'in_thread', 'reply_to', 'data_format'):
   390                            'sender', 'in_thread', 'reply_to', 'data_format'):
   391                 self.failUnless(ertype in schema, ertype)
   391                 self.failUnless(ertype in schema, ertype)
   392             self.assertEquals(sorted(schema['see_also']._rproperties.keys()),
   392             self.assertEquals(sorted(schema['see_also']._rproperties.keys()),
   393                               [('EmailThread', 'EmailThread'), ('Folder', 'Folder')])
   393                               [('EmailThread', 'EmailThread'), ('Folder', 'Folder')])
   394             self.assertEquals(sorted(schema['see_also'].subjects()), ['EmailThread', 'Folder'])
   394             self.assertEquals(sorted(schema['see_also'].subjects()), ['EmailThread', 'Folder'])
   395             self.assertEquals(sorted(schema['see_also'].objects()), ['EmailThread', 'Folder'])
   395             self.assertEquals(sorted(schema['see_also'].objects()), ['EmailThread', 'Folder'])
   396             from eemail.__pkginfo__ import version as eemail_version
   396             from cubes.email.__pkginfo__ import version as email_version
   397             from efile.__pkginfo__ import version as efile_version
   397             from cubes.file.__pkginfo__ import version as file_version
   398             self.assertEquals(self.execute('Any V WHERE X value V, X pkey "system.version.eemail"')[0][0],
   398             self.assertEquals(self.execute('Any V WHERE X value V, X pkey "system.version.email"')[0][0],
   399                               eemail_version)
   399                               email_version)
   400             self.assertEquals(self.execute('Any V WHERE X value V, X pkey "system.version.efile"')[0][0],
   400             self.assertEquals(self.execute('Any V WHERE X value V, X pkey "system.version.file"')[0][0],
   401                               efile_version)
   401                               file_version)
   402             self.failUnless('eemail' in self.config.cubes())
   402             self.failUnless('email' in self.config.cubes())
   403             self.failUnless('efile' in self.config.cubes())
   403             self.failUnless('file' in self.config.cubes())
   404             # trick: overwrite self.maxeid to avoid deletion of just reintroduced
   404             # trick: overwrite self.maxeid to avoid deletion of just reintroduced
   405             #        types (and their associated tables!)
   405             #        types (and their associated tables!)
   406             self.maxeid = self.execute('Any MAX(X)')[0][0]
   406             self.maxeid = self.execute('Any MAX(X)')[0][0]
   407             # why this commit is necessary is unclear to me (though without it
   407             # why this commit is necessary is unclear to me (though without it
   408             # next test may fail complaining of missing tables
   408             # next test may fail complaining of missing tables