cubicweb/web/test/unittest_propertysheet.py
author Denis Laxalde <denis.laxalde@logilab.fr>
Thu, 02 Jun 2016 10:27:34 +0200
changeset 11284 d4293b14c664
parent 11057 0b59724cb3f2
child 12287 547bb96ea2a8
permissions -rw-r--r--
[py3k] Fix config-level comparison in "cubicweb-ctl create" command dict.get -> None, and None cannot compare to an int in Python 3.

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