44 cnx.commit() |
44 cnx.commit() |
45 self.assertEqual(entity.creator.eid, self.membereid) |
45 self.assertEqual(entity.creator.eid, self.membereid) |
46 self.assertEqual(entity.dc_creator(), u'member') |
46 self.assertEqual(entity.dc_creator(), u'member') |
47 |
47 |
48 def test_type(self): |
48 def test_type(self): |
49 #dc_type may be translated |
49 # dc_type may be translated |
50 with self.admin_access.client_cnx() as cnx: |
50 with self.admin_access.client_cnx() as cnx: |
51 member = cnx.entity_from_eid(self.membereid) |
51 member = cnx.entity_from_eid(self.membereid) |
52 self.assertEqual(member.dc_type(), 'CWUser') |
52 self.assertEqual(member.dc_type(), 'CWUser') |
53 |
53 |
54 def test_cw_etype(self): |
54 def test_cw_etype(self): |
55 #cw_etype is never translated |
55 # cw_etype is never translated |
56 with self.admin_access.client_cnx() as cnx: |
56 with self.admin_access.client_cnx() as cnx: |
57 member = cnx.entity_from_eid(self.membereid) |
57 member = cnx.entity_from_eid(self.membereid) |
58 self.assertEqual(member.cw_etype, 'CWUser') |
58 self.assertEqual(member.cw_etype, 'CWUser') |
59 |
59 |
60 def test_entity_meta_attributes(self): |
60 def test_entity_meta_attributes(self): |
61 # XXX move to yams |
61 # XXX move to yams |
62 self.assertEqual(self.schema['CWUser'].meta_attributes(), {}) |
62 self.assertEqual(self.schema['CWUser'].meta_attributes(), {}) |
63 self.assertEqual(dict((str(k), v) |
63 self.assertEqual(dict((str(k), v) |
64 for k, v in self.schema['State'].meta_attributes().items()), |
64 for k, v in self.schema['State'].meta_attributes().items()), |
65 {'description_format': ('format', 'description')}) |
65 {'description_format': ('format', 'description')}) |
66 |
66 |
67 def test_fti_rql_method(self): |
67 def test_fti_rql_method(self): |
68 class EmailAddress(AnyEntity): |
68 class EmailAddress(AnyEntity): |
69 __regid__ = 'EmailAddress' |
69 __regid__ = 'EmailAddress' |
70 __select__ = AnyEntity.__select__ & yes(2) |
70 __select__ = AnyEntity.__select__ & yes(2) |
|
71 |
71 @classmethod |
72 @classmethod |
72 def cw_fti_index_rql_queries(cls, req): |
73 def cw_fti_index_rql_queries(cls, req): |
73 return ['EmailAddress Y'] |
74 return ['EmailAddress Y'] |
|
75 |
74 with self.admin_access.web_request() as req: |
76 with self.admin_access.web_request() as req: |
75 req.create_entity('EmailAddress', address=u'foo@bar.com') |
77 req.create_entity('EmailAddress', address=u'foo@bar.com') |
76 eclass = self.vreg['etypes'].etype_class('EmailAddress') |
78 eclass = self.vreg['etypes'].etype_class('EmailAddress') |
77 # deprecated |
79 # deprecated |
78 self.assertEqual(['Any X, ADDRESS, ALIAS WHERE X is EmailAddress, ' |
80 self.assertEqual(['Any X, ADDRESS, ALIAS WHERE X is EmailAddress, ' |
105 self.assertEqual(email1.prefered.eid, email2.eid) |
107 self.assertEqual(email1.prefered.eid, email2.eid) |
106 self.assertEqual(email2.prefered.eid, email2.eid) |
108 self.assertEqual(email2.prefered.eid, email2.eid) |
107 self.assertEqual(email3.prefered.eid, email3.eid) |
109 self.assertEqual(email3.prefered.eid, email3.eid) |
108 |
110 |
109 def test_mangling(self): |
111 def test_mangling(self): |
110 with self.admin_access.repo_cnx() as cnx: |
112 query = 'INSERT EmailAddress X: X address "maarten.ter.huurne@philips.com"' |
111 email = cnx.execute('INSERT EmailAddress X: X address "maarten.ter.huurne@philips.com"').get_entity(0, 0) |
113 with self.admin_access.repo_cnx() as cnx: |
|
114 email = cnx.execute(query).get_entity(0, 0) |
112 self.assertEqual(email.display_address(), 'maarten.ter.huurne@philips.com') |
115 self.assertEqual(email.display_address(), 'maarten.ter.huurne@philips.com') |
113 self.assertEqual(email.printable_value('address'), 'maarten.ter.huurne@philips.com') |
116 self.assertEqual(email.printable_value('address'), 'maarten.ter.huurne@philips.com') |
114 self.vreg.config.global_set_option('mangle-emails', True) |
117 self.vreg.config.global_set_option('mangle-emails', True) |
115 try: |
118 try: |
116 self.assertEqual(email.display_address(), 'maarten.ter.huurne at philips dot com') |
119 self.assertEqual(email.display_address(), 'maarten.ter.huurne at philips dot com') |
117 self.assertEqual(email.printable_value('address'), 'maarten.ter.huurne at philips dot com') |
120 self.assertEqual(email.printable_value('address'), |
|
121 'maarten.ter.huurne at philips dot com') |
118 email = cnx.execute('INSERT EmailAddress X: X address "syt"').get_entity(0, 0) |
122 email = cnx.execute('INSERT EmailAddress X: X address "syt"').get_entity(0, 0) |
119 self.assertEqual(email.display_address(), 'syt') |
123 self.assertEqual(email.display_address(), 'syt') |
120 self.assertEqual(email.printable_value('address'), 'syt') |
124 self.assertEqual(email.printable_value('address'), 'syt') |
121 finally: |
125 finally: |
122 self.vreg.config.global_set_option('mangle-emails', False) |
126 self.vreg.config.global_set_option('mangle-emails', False) |
127 'X address "maarten&ter@philips.com"').get_entity(0, 0) |
131 'X address "maarten&ter@philips.com"').get_entity(0, 0) |
128 self.assertEqual(email.printable_value('address'), |
132 self.assertEqual(email.printable_value('address'), |
129 'maarten&ter@philips.com') |
133 'maarten&ter@philips.com') |
130 self.assertEqual(email.printable_value('address', format='text/plain'), |
134 self.assertEqual(email.printable_value('address', format='text/plain'), |
131 'maarten&ter@philips.com') |
135 'maarten&ter@philips.com') |
|
136 |
132 |
137 |
133 class CWUserTC(BaseEntityTC): |
138 class CWUserTC(BaseEntityTC): |
134 |
139 |
135 def test_complete(self): |
140 def test_complete(self): |
136 with self.admin_access.repo_cnx() as cnx: |
141 with self.admin_access.repo_cnx() as cnx: |
165 |
170 |
166 def test_allowed_massmail_keys(self): |
171 def test_allowed_massmail_keys(self): |
167 with self.admin_access.repo_cnx() as cnx: |
172 with self.admin_access.repo_cnx() as cnx: |
168 e = cnx.execute('CWUser U WHERE U login "member"').get_entity(0, 0) |
173 e = cnx.execute('CWUser U WHERE U login "member"').get_entity(0, 0) |
169 # Bytes/Password attributes should be omitted |
174 # Bytes/Password attributes should be omitted |
170 self.assertEqual(e.cw_adapt_to('IEmailable').allowed_massmail_keys(), |
175 self.assertEqual( |
171 set(('surname', 'firstname', 'login', 'last_login_time', |
176 e.cw_adapt_to('IEmailable').allowed_massmail_keys(), |
172 'creation_date', 'modification_date', 'cwuri', 'eid')) |
177 set(('surname', 'firstname', 'login', 'last_login_time', |
173 ) |
178 'creation_date', 'modification_date', 'cwuri', 'eid')) |
|
179 ) |
174 |
180 |
175 def test_cw_instantiate_object_relation(self): |
181 def test_cw_instantiate_object_relation(self): |
176 """ a weird non regression test """ |
182 """ a weird non regression test """ |
177 with self.admin_access.repo_cnx() as cnx: |
183 with self.admin_access.repo_cnx() as cnx: |
178 e = cnx.execute('CWUser U WHERE U login "member"').get_entity(0, 0) |
184 e = cnx.execute('CWUser U WHERE U login "member"').get_entity(0, 0) |
211 |
217 |
212 def test_etype_class_selection_and_specialization(self): |
218 def test_etype_class_selection_and_specialization(self): |
213 # no specific class for Subdivisions, the default one should be selected |
219 # no specific class for Subdivisions, the default one should be selected |
214 eclass = self.select_eclass('SubDivision') |
220 eclass = self.select_eclass('SubDivision') |
215 self.assertTrue(eclass.__autogenerated__) |
221 self.assertTrue(eclass.__autogenerated__) |
216 #self.assertEqual(eclass.__bases__, (AnyEntity,)) |
222 # self.assertEqual(eclass.__bases__, (AnyEntity,)) |
217 # build class from most generic to most specific and make |
223 # build class from most generic to most specific and make |
218 # sure the most specific is always selected |
224 # sure the most specific is always selected |
219 self.vreg._loadedmods[__name__] = {} |
225 self.vreg._loadedmods[__name__] = {} |
220 for etype in ('Company', 'Division', 'SubDivision'): |
226 for etype in ('Company', 'Division', 'SubDivision'): |
221 class Foo(AnyEntity): |
227 class Foo(AnyEntity): |