fromlogilab.common.testlibimportunittest_main,TestCasefromos.pathimportjoinfromcubicwebimportCW_SOFTWARE_ROOTasBASEfromcubicweb.vregistryimportVObjectfromcubicweb.cwvregimportCubicWebRegistry,UnknownPropertyfromcubicweb.devtoolsimportTestServerConfigurationfromcubicweb.entities.libimportCardfromcubicweb.interfacesimportIMileStoneclassYesSchema:def__contains__(self,something):returnTrueWEBVIEWSDIR=join(BASE,'web','views')classVRegistryTC(TestCase):defsetUp(self):config=TestServerConfiguration('data')self.vreg=CubicWebRegistry(config)config.bootstrap_cubes()self.vreg.schema=config.load_schema()deftest_load(self):self.vreg.init_registration([WEBVIEWSDIR])self.vreg.load_file(join(WEBVIEWSDIR,'euser.py'),'cubicweb.web.views.euser')self.vreg.load_file(join(WEBVIEWSDIR,'baseviews.py'),'cubicweb.web.views.baseviews')fpvc=[vforvinself.vreg.registry_objects('views','primary')ifv.__module__=='cubicweb.web.views.euser'][0]fpv=fpvc(None,None)# don't want a TypeError due to super callself.assertRaises(AttributeError,fpv.render_entity_attributes,None,None)deftest_load_interface_based_vojects(self):self.vreg.init_registration([WEBVIEWSDIR])self.vreg.load_file(join(WEBVIEWSDIR,'idownloadable.py'),'cubicweb.web.views.idownloadable')self.vreg.load_file(join(WEBVIEWSDIR,'baseviews.py'),'cubicweb.web.views.baseviews')# check loading baseviews after idownloadable isn't kicking interface based viewsself.assertEquals(len(self.vreg['views']['primary']),2)deftest___selectors__compat(self):myselector1=lambda*args:1myselector2=lambda*args:1classAnAppObject(VObject):__selectors__=(myselector1,myselector2)AnAppObject.build___select__()self.assertEquals(AnAppObject.__select__(AnAppObject),2)deftest_properties(self):self.failIf('system.version.cubicweb'inself.vreg['propertydefs'])self.failUnless(self.vreg.property_info('system.version.cubicweb'))self.assertRaises(UnknownProperty,self.vreg.property_info,'a.non.existent.key')deftest_load_subinterface_based_vobjects(self):self.vreg.reset()self.vreg.register_objects([join(BASE,'web','views','iprogress.py')])# check progressbar was kickedself.failIf(self.vreg['views'].get('progressbar'))classMyCard(Card):__implements__=(IMileStone,)self.vreg.reset()self.vreg._loadedmods[__name__]={}self.vreg.register_vobject_class(MyCard)self.vreg.register_objects([join(BASE,'web','views','iprogress.py')])# check progressbar isn't kickedself.assertEquals(len(self.vreg['views']['progressbar']),1)if__name__=='__main__':unittest_main()