entities/test/unittest_base.py
changeset 10847 ce5403611cbe
parent 10662 10942ed172de
child 10973 0939ad2edf63
equal deleted inserted replaced
10846:d186820c5f7a 10847:ce5403611cbe
    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):