|
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() |