cubicweb/web/test/unittest_propertysheet.py
changeset 11057 0b59724cb3f2
parent 10897 7c386161ebd6
child 12287 547bb96ea2a8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cubicweb/web/test/unittest_propertysheet.py	Sat Jan 16 13:48:51 2016 +0100
@@ -0,0 +1,63 @@
+import os
+from os.path import join, dirname
+from shutil import rmtree
+import errno
+import tempfile
+from unittest import TestCase, main
+
+from cubicweb.web.propertysheet import PropertySheet, lazystr
+
+
+DATADIR = join(dirname(__file__), 'data')
+
+
+class PropertySheetTC(TestCase):
+
+    def setUp(self):
+        uicache = join(DATADIR, 'uicache')
+        try:
+            os.makedirs(uicache)
+        except OSError as err:
+            if err.errno != errno.EEXIST:
+                raise
+        self.cachedir = tempfile.mkdtemp(dir=uicache)
+
+    def tearDown(self):
+        rmtree(self.cachedir)
+
+    def data(self, filename):
+        return join(DATADIR, filename)
+
+    def test(self):
+        ps = PropertySheet(self.cachedir, datadir_url='http://cwtest.com')
+        ps.load(self.data('sheet1.py'))
+        ps.load(self.data('sheet2.py'))
+        # defined by sheet1
+        self.assertEqual(ps['logo'], 'http://cwtest.com/logo.png')
+        # defined by sheet1, overriden by sheet2
+        self.assertEqual(ps['bgcolor'], '#FFFFFF')
+        # defined by sheet2
+        self.assertEqual(ps['fontcolor'], 'black')
+        # defined by sheet1, extended by sheet2
+        self.assertEqual(ps['stylesheets'], ['http://cwtest.com/cubicweb.css',
+                                              'http://cwtest.com/mycube.css'])
+        # lazy string defined by sheet1
+        self.assertIsInstance(ps['lazy'], lazystr)
+        self.assertEqual(str(ps['lazy']), '#FFFFFF')
+        # test compilation
+        self.assertEqual(ps.compile('a {bgcolor: %(bgcolor)s; size: 1%;}'),
+                          'a {bgcolor: #FFFFFF; size: 1%;}')
+        self.assertEqual(ps.process_resource(DATADIR, 'pouet.css'),
+                         self.cachedir)
+        self.assertFalse(ps.need_reload())
+        os.utime(self.data('sheet1.py'), None)
+        self.assertTrue(ps.need_reload())
+        ps.reload()
+        self.assertFalse(ps.need_reload())
+        ps.process_resource(DATADIR, 'pouet.css') # put in cache
+        os.utime(self.data('pouet.css'), None)
+        self.assertFalse(ps.need_reload())
+
+
+if __name__ == '__main__':
+    main()