entities/test/unittest_base.py
changeset 7791 31bb51ea5485
parent 7244 a918f76441ce
child 7980 c85bea091a6c
equal deleted inserted replaced
7790:7e16e056eecb 7791:31bb51ea5485
    86         e = self.execute('CWUser X WHERE X login "admin"').get_entity(0, 0)
    86         e = self.execute('CWUser X WHERE X login "admin"').get_entity(0, 0)
    87         e.complete()
    87         e.complete()
    88 
    88 
    89     def test_matching_groups(self):
    89     def test_matching_groups(self):
    90         e = self.execute('CWUser X WHERE X login "admin"').get_entity(0, 0)
    90         e = self.execute('CWUser X WHERE X login "admin"').get_entity(0, 0)
    91         self.failUnless(e.matching_groups('managers'))
    91         self.assertTrue(e.matching_groups('managers'))
    92         self.failIf(e.matching_groups('xyz'))
    92         self.assertFalse(e.matching_groups('xyz'))
    93         self.failUnless(e.matching_groups(('xyz', 'managers')))
    93         self.assertTrue(e.matching_groups(('xyz', 'managers')))
    94         self.failIf(e.matching_groups(('xyz', 'abcd')))
    94         self.assertFalse(e.matching_groups(('xyz', 'abcd')))
    95 
    95 
    96     def test_dc_title_and_name(self):
    96     def test_dc_title_and_name(self):
    97         e = self.execute('CWUser U WHERE U login "member"').get_entity(0, 0)
    97         e = self.execute('CWUser U WHERE U login "member"').get_entity(0, 0)
    98         self.assertEqual(e.dc_title(), 'member')
    98         self.assertEqual(e.dc_title(), 'member')
    99         self.assertEqual(e.name(), 'member')
    99         self.assertEqual(e.name(), 'member')
   129         self.vreg._loadedmods[__name__] = {}
   129         self.vreg._loadedmods[__name__] = {}
   130         self.vreg.register(MyUser)
   130         self.vreg.register(MyUser)
   131         self.vreg['etypes'].initialization_completed()
   131         self.vreg['etypes'].initialization_completed()
   132         MyUser_ = self.vreg['etypes'].etype_class('CWUser')
   132         MyUser_ = self.vreg['etypes'].etype_class('CWUser')
   133         # a copy is done systematically
   133         # a copy is done systematically
   134         self.failUnless(issubclass(MyUser_, MyUser))
   134         self.assertTrue(issubclass(MyUser_, MyUser))
   135         self.failUnless(implements(MyUser_, IMileStone))
   135         self.assertTrue(implements(MyUser_, IMileStone))
   136         self.failUnless(implements(MyUser_, ICalendarable))
   136         self.assertTrue(implements(MyUser_, ICalendarable))
   137         # original class should not have beed modified, only the copy
   137         # original class should not have beed modified, only the copy
   138         self.failUnless(implements(MyUser, IMileStone))
   138         self.assertTrue(implements(MyUser, IMileStone))
   139         self.failIf(implements(MyUser, ICalendarable))
   139         self.assertFalse(implements(MyUser, ICalendarable))
   140 
   140 
   141 
   141 
   142 class SpecializedEntityClassesTC(CubicWebTC):
   142 class SpecializedEntityClassesTC(CubicWebTC):
   143 
   143 
   144     def select_eclass(self, etype):
   144     def select_eclass(self, etype):
   147         return self.vreg['etypes'].etype_class(etype)
   147         return self.vreg['etypes'].etype_class(etype)
   148 
   148 
   149     def test_etype_class_selection_and_specialization(self):
   149     def test_etype_class_selection_and_specialization(self):
   150         # no specific class for Subdivisions, the default one should be selected
   150         # no specific class for Subdivisions, the default one should be selected
   151         eclass = self.select_eclass('SubDivision')
   151         eclass = self.select_eclass('SubDivision')
   152         self.failUnless(eclass.__autogenerated__)
   152         self.assertTrue(eclass.__autogenerated__)
   153         #self.assertEqual(eclass.__bases__, (AnyEntity,))
   153         #self.assertEqual(eclass.__bases__, (AnyEntity,))
   154         # build class from most generic to most specific and make
   154         # build class from most generic to most specific and make
   155         # sure the most specific is always selected
   155         # sure the most specific is always selected
   156         self.vreg._loadedmods[__name__] = {}
   156         self.vreg._loadedmods[__name__] = {}
   157         for etype in ('Company', 'Division', 'SubDivision'):
   157         for etype in ('Company', 'Division', 'SubDivision'):
   158             class Foo(AnyEntity):
   158             class Foo(AnyEntity):
   159                 __regid__ = etype
   159                 __regid__ = etype
   160             self.vreg.register(Foo)
   160             self.vreg.register(Foo)
   161             eclass = self.select_eclass('SubDivision')
   161             eclass = self.select_eclass('SubDivision')
   162             self.failUnless(eclass.__autogenerated__)
   162             self.assertTrue(eclass.__autogenerated__)
   163             self.failIf(eclass is Foo)
   163             self.assertFalse(eclass is Foo)
   164             if etype == 'SubDivision':
   164             if etype == 'SubDivision':
   165                 self.assertEqual(eclass.__bases__, (Foo,))
   165                 self.assertEqual(eclass.__bases__, (Foo,))
   166             else:
   166             else:
   167                 self.assertEqual(eclass.__bases__[0].__bases__, (Foo,))
   167                 self.assertEqual(eclass.__bases__[0].__bases__, (Foo,))
   168         # check Division eclass is still selected for plain Division entities
   168         # check Division eclass is still selected for plain Division entities