entities/test/unittest_base.py
branchstable
changeset 5994 97c55baefa0c
parent 5578 6b9fee0c5c42
child 6340 470d8e828fda
equal deleted inserted replaced
5976:00b1b6b906cf 5994:97c55baefa0c
    25 from logilab.common.interface import implements
    25 from logilab.common.interface import implements
    26 
    26 
    27 from cubicweb.devtools.testlib import CubicWebTC
    27 from cubicweb.devtools.testlib import CubicWebTC
    28 
    28 
    29 from cubicweb import ValidationError
    29 from cubicweb import ValidationError
    30 from cubicweb.interfaces import IMileStone, IWorkflowable
    30 from cubicweb.interfaces import IMileStone, ICalendarable
    31 from cubicweb.entities import AnyEntity
    31 from cubicweb.entities import AnyEntity
    32 
    32 
    33 
    33 
    34 class BaseEntityTC(CubicWebTC):
    34 class BaseEntityTC(CubicWebTC):
    35 
    35 
   104         self.assertEquals(e.name(), u'bouah lôt')
   104         self.assertEquals(e.name(), u'bouah lôt')
   105 
   105 
   106     def test_allowed_massmail_keys(self):
   106     def test_allowed_massmail_keys(self):
   107         e = self.execute('CWUser U WHERE U login "member"').get_entity(0, 0)
   107         e = self.execute('CWUser U WHERE U login "member"').get_entity(0, 0)
   108         # Bytes/Password attributes should be omited
   108         # Bytes/Password attributes should be omited
   109         self.assertEquals(e.allowed_massmail_keys(),
   109         self.assertEquals(e.cw_adapt_to('IEmailable').allowed_massmail_keys(),
   110                           set(('surname', 'firstname', 'login', 'last_login_time',
   110                           set(('surname', 'firstname', 'login', 'last_login_time',
   111                                'creation_date', 'modification_date', 'cwuri', 'eid'))
   111                                'creation_date', 'modification_date', 'cwuri', 'eid'))
   112                           )
   112                           )
   113 
   113 
   114 
   114 
   115 class InterfaceTC(CubicWebTC):
   115 class InterfaceTC(CubicWebTC):
   116 
   116 
   117     def test_nonregr_subclasses_and_mixins_interfaces(self):
   117     def test_nonregr_subclasses_and_mixins_interfaces(self):
       
   118         from cubicweb.entities.wfobjs import WorkflowableMixIn
       
   119         WorkflowableMixIn.__implements__ = (ICalendarable,)
   118         CWUser = self.vreg['etypes'].etype_class('CWUser')
   120         CWUser = self.vreg['etypes'].etype_class('CWUser')
   119         self.failUnless(implements(CWUser, IWorkflowable))
       
   120         class MyUser(CWUser):
   121         class MyUser(CWUser):
   121             __implements__ = (IMileStone,)
   122             __implements__ = (IMileStone,)
   122         self.vreg._loadedmods[__name__] = {}
   123         self.vreg._loadedmods[__name__] = {}
   123         self.vreg.register(MyUser)
   124         self.vreg.register(MyUser)
   124         self.vreg['etypes'].initialization_completed()
   125         self.vreg['etypes'].initialization_completed()
   125         MyUser_ = self.vreg['etypes'].etype_class('CWUser')
   126         MyUser_ = self.vreg['etypes'].etype_class('CWUser')
   126         # a copy is done systematically
   127         # a copy is done systematically
   127         self.failUnless(issubclass(MyUser_, MyUser))
   128         self.failUnless(issubclass(MyUser_, MyUser))
   128         self.failUnless(implements(MyUser_, IMileStone))
   129         self.failUnless(implements(MyUser_, IMileStone))
   129         self.failUnless(implements(MyUser_, IWorkflowable))
   130         self.failUnless(implements(MyUser_, ICalendarable))
   130         # original class should not have beed modified, only the copy
   131         # original class should not have beed modified, only the copy
   131         self.failUnless(implements(MyUser, IMileStone))
   132         self.failUnless(implements(MyUser, IMileStone))
   132         self.failIf(implements(MyUser, IWorkflowable))
   133         self.failIf(implements(MyUser, ICalendarable))
   133 
   134 
   134 
   135 
   135 class SpecializedEntityClassesTC(CubicWebTC):
   136 class SpecializedEntityClassesTC(CubicWebTC):
   136 
   137 
   137     def select_eclass(self, etype):
   138     def select_eclass(self, etype):