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 |