261 |
261 |
262 |
262 |
263 class InterfaceTC(EnvBasedTC): |
263 class InterfaceTC(EnvBasedTC): |
264 |
264 |
265 def test_nonregr_subclasses_and_mixins_interfaces(self): |
265 def test_nonregr_subclasses_and_mixins_interfaces(self): |
|
266 self.failUnless(implements(CWUser, IWorkflowable)) |
266 class MyUser(CWUser): |
267 class MyUser(CWUser): |
267 __implements__ = (IMileStone,) |
268 __implements__ = (IMileStone,) |
268 self.vreg._loadedmods[__name__] = {} |
269 self.vreg._loadedmods[__name__] = {} |
269 self.vreg.register_appobject_class(MyUser) |
270 self.vreg.register_appobject_class(MyUser) |
270 self.failUnless(implements(CWUser, IWorkflowable)) |
271 self.vreg['etypes'].initialization_completed() |
271 self.failUnless(implements(MyUser, IMileStone)) |
272 MyUser_ = self.vreg['etypes'].etype_class('CWUser') |
272 self.failUnless(implements(MyUser, IWorkflowable)) |
273 self.failUnless(MyUser is MyUser_) |
|
274 self.failUnless(implements(MyUser_, IMileStone)) |
|
275 self.failUnless(implements(MyUser_, IWorkflowable)) |
273 |
276 |
274 |
277 |
275 class SpecializedEntityClassesTC(EnvBasedTC): |
278 class SpecializedEntityClassesTC(EnvBasedTC): |
276 |
279 |
277 def select_eclass(self, etype): |
280 def select_eclass(self, etype): |