19 """unit tests for cubicweb.entities.base module |
19 """unit tests for cubicweb.entities.base module |
20 """ |
20 """ |
21 |
21 |
22 from logilab.common.testlib import unittest_main |
22 from logilab.common.testlib import unittest_main |
23 from logilab.common.decorators import clear_cache |
23 from logilab.common.decorators import clear_cache |
|
24 from logilab.common.registry import yes |
24 |
25 |
25 from cubicweb.devtools.testlib import CubicWebTC |
26 from cubicweb.devtools.testlib import CubicWebTC |
26 |
27 |
27 from cubicweb.entities import AnyEntity |
28 from cubicweb.entities import AnyEntity |
28 |
29 |
62 self.assertEqual(dict((str(k), v) |
63 self.assertEqual(dict((str(k), v) |
63 for k, v in self.schema['State'].meta_attributes().items()), |
64 for k, v in self.schema['State'].meta_attributes().items()), |
64 {'description_format': ('format', 'description')}) |
65 {'description_format': ('format', 'description')}) |
65 |
66 |
66 def test_fti_rql_method(self): |
67 def test_fti_rql_method(self): |
|
68 class EmailAddress(AnyEntity): |
|
69 __regid__ = 'EmailAddress' |
|
70 __select__ = AnyEntity.__select__ & yes(2) |
|
71 @classmethod |
|
72 def cw_fti_index_rql_queries(cls, req): |
|
73 return ['EmailAddress Y'] |
67 with self.admin_access.web_request() as req: |
74 with self.admin_access.web_request() as req: |
|
75 req.create_entity('EmailAddress', address=u'foo@bar.com') |
68 eclass = self.vreg['etypes'].etype_class('EmailAddress') |
76 eclass = self.vreg['etypes'].etype_class('EmailAddress') |
|
77 # deprecated |
69 self.assertEqual(['Any X, ADDRESS, ALIAS WHERE X is EmailAddress, ' |
78 self.assertEqual(['Any X, ADDRESS, ALIAS WHERE X is EmailAddress, ' |
70 'X address ADDRESS, X alias ALIAS'], |
79 'X address ADDRESS, X alias ALIAS'], |
71 eclass.cw_fti_index_rql_queries(req)) |
80 eclass.cw_fti_index_rql_queries(req)) |
|
81 |
|
82 self.assertEqual(['Any X, ADDRESS, ALIAS ORDERBY X LIMIT 1000 WHERE X is EmailAddress, ' |
|
83 'X address ADDRESS, X alias ALIAS, X eid > 0'], |
|
84 [rset.rql for rset in eclass.cw_fti_index_rql_limit(req)]) |
|
85 |
|
86 # test backwards compatibility with custom method |
|
87 with self.temporary_appobjects(EmailAddress): |
|
88 self.vreg['etypes'].clear_caches() |
|
89 eclass = self.vreg['etypes'].etype_class('EmailAddress') |
|
90 self.assertEqual(['EmailAddress Y'], |
|
91 [rset.rql for rset in eclass.cw_fti_index_rql_limit(req)]) |
72 |
92 |
73 |
93 |
74 class EmailAddressTC(BaseEntityTC): |
94 class EmailAddressTC(BaseEntityTC): |
75 |
95 |
76 def test_canonical_form(self): |
96 def test_canonical_form(self): |