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 |