test/unittest_cwconfig.py
changeset 0 b97547f5f1fa
child 13 bae30087db21
equal deleted inserted replaced
-1:000000000000 0:b97547f5f1fa
       
     1 import os
       
     2 from tempfile import mktemp
       
     3 
       
     4 from logilab.common.testlib import TestCase, unittest_main
       
     5 from logilab.common.changelog import Version
       
     6 
       
     7 from cubicweb.devtools import ApptestConfiguration
       
     8 
       
     9 def unabsolutize(path):
       
    10     parts = path.split(os.sep)
       
    11     for i, part in enumerate(parts):
       
    12         if part in ('cubicweb', 'cubes', 'cubes'):
       
    13             return '/'.join(parts[i+1:])
       
    14     raise Exception('duh? %s' % path)
       
    15     
       
    16 class CubicWebConfigurationTC(TestCase):
       
    17     def setUp(self):
       
    18         self.config = ApptestConfiguration('data')
       
    19         self.config._cubes = ('eemail', 'efile')
       
    20 
       
    21     def test_reorder_cubes(self):
       
    22         # jpl depends on eemail and efile and ecomment
       
    23         # eemail depends on efile
       
    24         self.assertEquals(self.config.reorder_cubes(['efile', 'eemail', 'jpl']),
       
    25                           ('jpl', 'eemail', 'efile'))
       
    26         self.assertEquals(self.config.reorder_cubes(['eemail', 'efile', 'jpl']),
       
    27                           ('jpl', 'eemail', 'efile'))
       
    28         self.assertEquals(self.config.reorder_cubes(['eemail', 'jpl', 'efile']),
       
    29                           ('jpl', 'eemail', 'efile'))
       
    30         self.assertEquals(self.config.reorder_cubes(['efile', 'jpl', 'eemail']),
       
    31                           ('jpl', 'eemail', 'efile'))
       
    32         self.assertEquals(self.config.reorder_cubes(['jpl', 'efile', 'eemail']),
       
    33                           ('jpl', 'eemail', 'efile'))
       
    34         self.assertEquals(self.config.reorder_cubes(('jpl', 'eemail', 'efile')),
       
    35                           ('jpl', 'eemail', 'efile'))
       
    36         
       
    37     def test_reorder_cubes_recommends(self):
       
    38         from ecomment import __pkginfo__ as ecomment_pkginfo
       
    39         ecomment_pkginfo.__recommend__ = ('efile',)
       
    40         try:
       
    41             # eemail recommends ecomment
       
    42             # ecomment recommends efile
       
    43             self.assertEquals(self.config.reorder_cubes(('jpl', 'eemail', 'efile', 'ecomment')),
       
    44                               ('jpl', 'eemail', 'ecomment', 'efile'))
       
    45             self.assertEquals(self.config.reorder_cubes(('jpl', 'eemail', 'ecomment', 'efile')),
       
    46                               ('jpl', 'eemail', 'ecomment', 'efile'))
       
    47             self.assertEquals(self.config.reorder_cubes(('jpl', 'ecomment', 'eemail', 'efile')),
       
    48                               ('jpl', 'eemail', 'ecomment', 'efile'))
       
    49             self.assertEquals(self.config.reorder_cubes(('ecomment', 'jpl', 'eemail', 'efile')),
       
    50                               ('jpl', 'eemail', 'ecomment', 'efile'))
       
    51         finally:
       
    52             ecomment_pkginfo.__use__ = ()
       
    53             
       
    54         
       
    55 #     def test_vc_config(self):
       
    56 #         vcconf = self.config.vc_config()
       
    57 #         self.assertIsInstance(vcconf['EEMAIL'], Version)
       
    58 #         self.assertEquals(vcconf['EEMAIL'], (0, 3, 1))
       
    59 #         self.assertEquals(vcconf['CW'], (2, 31, 2))
       
    60 #         self.assertRaises(KeyError, vcconf.__getitem__, 'CW_VERSION')
       
    61 #         self.assertRaises(KeyError, vcconf.__getitem__, 'CRM')
       
    62         
       
    63     def test_expand_cubes(self):
       
    64         self.assertEquals(self.config.expand_cubes(('eemail', 'eblog')),
       
    65                           ['eemail', 'eblog', 'efile'])
       
    66 
       
    67     def test_vregistry_path(self):
       
    68         self.assertEquals([unabsolutize(p) for p in self.config.vregistry_path()],
       
    69                           ['entities', 'web/views', 'sobjects',
       
    70                            'efile/entities.py', 'efile/views', 'efile/hooks.py',
       
    71                            'eemail/entities.py', 'eemail/views', 'eemail/hooks.py'])
       
    72             
       
    73 if __name__ == '__main__':
       
    74     unittest_main()