diff -r 000000000000 -r b97547f5f1fa test/unittest_vregistry.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/unittest_vregistry.py Wed Nov 05 15:52:50 2008 +0100 @@ -0,0 +1,49 @@ +from logilab.common.testlib import unittest_main, TestCase + +from os.path import join + +from cubicweb import CW_SOFTWARE_ROOT as BASE +from cubicweb.vregistry import VObject +from cubicweb.cwvreg import CubicWebRegistry, UnknownProperty +from cubicweb.cwconfig import CubicWebConfiguration + +class YesSchema: + def __contains__(self, something): + return True + +class VRegistryTC(TestCase): + + def setUp(self): + config = CubicWebConfiguration('data') + self.vreg = CubicWebRegistry(config) + self.vreg.schema = YesSchema() + + def test_load(self): + self.vreg.load_file(join(BASE, 'web', 'views'), 'euser.py') + self.vreg.load_file(join(BASE, 'web', 'views'), 'baseviews.py') + fpvc = [v for v in self.vreg.registry_objects('views', 'primary') if v.accepts[0] == 'EUser'][0] + fpv = fpvc(None, None) + # don't want a TypeError due to super call + self.assertRaises(AttributeError, fpv.render_entity_attributes, None, None) + + def test_load_interface_based_vojects(self): + self.vreg.load_file(join(BASE, 'web', 'views'), 'idownloadable.py') + self.vreg.load_file(join(BASE, 'web', 'views'), 'baseviews.py') + # check loading baseviews after idownloadable isn't kicking interface based views + self.assertEquals(len(self.vreg['views']['primary']), 2) + + def test_autoselectors(self): + myselector1 = lambda *args: 1 + myselector2 = lambda *args: 1 + class AnAppObject(VObject): + __selectors__ = (myselector1, myselector2) + self.assertEquals(AnAppObject.__select__(), 2) + + def test_properties(self): + self.failIf('system.version.cubicweb' in self.vreg['propertydefs']) + self.failUnless(self.vreg.property_info('system.version.cubicweb')) + self.assertRaises(UnknownProperty, self.vreg.property_info, 'a.non.existent.key') + + +if __name__ == '__main__': + unittest_main()