cubicweb/web/test/unittest_propertysheet.py
changeset 11057 0b59724cb3f2
parent 10897 7c386161ebd6
child 12287 547bb96ea2a8
equal deleted inserted replaced
11052:058bb3dc685f 11057:0b59724cb3f2
       
     1 import os
       
     2 from os.path import join, dirname
       
     3 from shutil import rmtree
       
     4 import errno
       
     5 import tempfile
       
     6 from unittest import TestCase, main
       
     7 
       
     8 from cubicweb.web.propertysheet import PropertySheet, lazystr
       
     9 
       
    10 
       
    11 DATADIR = join(dirname(__file__), 'data')
       
    12 
       
    13 
       
    14 class PropertySheetTC(TestCase):
       
    15 
       
    16     def setUp(self):
       
    17         uicache = join(DATADIR, 'uicache')
       
    18         try:
       
    19             os.makedirs(uicache)
       
    20         except OSError as err:
       
    21             if err.errno != errno.EEXIST:
       
    22                 raise
       
    23         self.cachedir = tempfile.mkdtemp(dir=uicache)
       
    24 
       
    25     def tearDown(self):
       
    26         rmtree(self.cachedir)
       
    27 
       
    28     def data(self, filename):
       
    29         return join(DATADIR, filename)
       
    30 
       
    31     def test(self):
       
    32         ps = PropertySheet(self.cachedir, datadir_url='http://cwtest.com')
       
    33         ps.load(self.data('sheet1.py'))
       
    34         ps.load(self.data('sheet2.py'))
       
    35         # defined by sheet1
       
    36         self.assertEqual(ps['logo'], 'http://cwtest.com/logo.png')
       
    37         # defined by sheet1, overriden by sheet2
       
    38         self.assertEqual(ps['bgcolor'], '#FFFFFF')
       
    39         # defined by sheet2
       
    40         self.assertEqual(ps['fontcolor'], 'black')
       
    41         # defined by sheet1, extended by sheet2
       
    42         self.assertEqual(ps['stylesheets'], ['http://cwtest.com/cubicweb.css',
       
    43                                               'http://cwtest.com/mycube.css'])
       
    44         # lazy string defined by sheet1
       
    45         self.assertIsInstance(ps['lazy'], lazystr)
       
    46         self.assertEqual(str(ps['lazy']), '#FFFFFF')
       
    47         # test compilation
       
    48         self.assertEqual(ps.compile('a {bgcolor: %(bgcolor)s; size: 1%;}'),
       
    49                           'a {bgcolor: #FFFFFF; size: 1%;}')
       
    50         self.assertEqual(ps.process_resource(DATADIR, 'pouet.css'),
       
    51                          self.cachedir)
       
    52         self.assertFalse(ps.need_reload())
       
    53         os.utime(self.data('sheet1.py'), None)
       
    54         self.assertTrue(ps.need_reload())
       
    55         ps.reload()
       
    56         self.assertFalse(ps.need_reload())
       
    57         ps.process_resource(DATADIR, 'pouet.css') # put in cache
       
    58         os.utime(self.data('pouet.css'), None)
       
    59         self.assertFalse(ps.need_reload())
       
    60 
       
    61 
       
    62 if __name__ == '__main__':
       
    63     main()