test/unittest_selectors.py
changeset 5877 0c7b7b76a84f
parent 5561 58b05c314443
child 6046 3fd4a34c4a09
equal deleted inserted replaced
5876:e77aa963fb19 5877:0c7b7b76a84f
    20 from logilab.common.testlib import TestCase, unittest_main
    20 from logilab.common.testlib import TestCase, unittest_main
    21 
    21 
    22 from cubicweb import Binary
    22 from cubicweb import Binary
    23 from cubicweb.devtools.testlib import CubicWebTC
    23 from cubicweb.devtools.testlib import CubicWebTC
    24 from cubicweb.appobject import Selector, AndSelector, OrSelector
    24 from cubicweb.appobject import Selector, AndSelector, OrSelector
    25 from cubicweb.selectors import implements, adaptable, match_user_groups
    25 from cubicweb.selectors import is_instance, adaptable, match_user_groups
    26 from cubicweb.interfaces import IDownloadable
    26 from cubicweb.interfaces import IDownloadable
    27 from cubicweb.web import action
    27 from cubicweb.web import action
    28 
    28 
    29 class _1_(Selector):
    29 class _1_(Selector):
    30     def __call__(self, *args, **kwargs):
    30     def __call__(self, *args, **kwargs):
    90         self.failUnless(isinstance(selector, OrSelector))
    90         self.failUnless(isinstance(selector, OrSelector))
    91         self.assertEquals(len(selector.selectors), 2)
    91         self.assertEquals(len(selector.selectors), 2)
    92         self.assertEquals(selector(None), 2)
    92         self.assertEquals(selector(None), 2)
    93 
    93 
    94     def test_search_selectors(self):
    94     def test_search_selectors(self):
    95         sel = implements('something')
    95         sel = is_instance('something')
    96         self.assertIs(sel.search_selector(implements), sel)
    96         self.assertIs(sel.search_selector(is_instance), sel)
    97         csel = AndSelector(sel, Selector())
    97         csel = AndSelector(sel, Selector())
    98         self.assertIs(csel.search_selector(implements), sel)
    98         self.assertIs(csel.search_selector(is_instance), sel)
    99         csel = AndSelector(Selector(), sel)
    99         csel = AndSelector(Selector(), sel)
   100         self.assertIs(csel.search_selector(implements), sel)
   100         self.assertIs(csel.search_selector(is_instance), sel)
   101 
   101 
   102     def test_inplace_and(self):
   102     def test_inplace_and(self):
   103         selector = _1_()
   103         selector = _1_()
   104         selector &= _1_()
   104         selector &= _1_()
   105         selector &= _1_()
   105         selector &= _1_()
   139 class ImplementsSelectorTC(CubicWebTC):
   139 class ImplementsSelectorTC(CubicWebTC):
   140     def test_etype_priority(self):
   140     def test_etype_priority(self):
   141         req = self.request()
   141         req = self.request()
   142         f = req.create_entity('File', data_name=u'hop.txt', data=Binary('hop'))
   142         f = req.create_entity('File', data_name=u'hop.txt', data=Binary('hop'))
   143         rset = f.as_rset()
   143         rset = f.as_rset()
   144         anyscore = implements('Any')(f.__class__, req, rset=rset)
   144         anyscore = is_instance('Any')(f.__class__, req, rset=rset)
   145         idownscore = adaptable('IDownloadable')(f.__class__, req, rset=rset)
   145         idownscore = adaptable('IDownloadable')(f.__class__, req, rset=rset)
   146         self.failUnless(idownscore > anyscore, (idownscore, anyscore))
   146         self.failUnless(idownscore > anyscore, (idownscore, anyscore))
   147         filescore = implements('File')(f.__class__, req, rset=rset)
   147         filescore = is_instance('File')(f.__class__, req, rset=rset)
   148         self.failUnless(filescore > idownscore, (filescore, idownscore))
   148         self.failUnless(filescore > idownscore, (filescore, idownscore))
   149 
   149 
   150     def test_etype_inheritance_no_yams_inheritance(self):
   150     def test_etype_inheritance_no_yams_inheritance(self):
   151         cls = self.vreg['etypes'].etype_class('Personne')
   151         cls = self.vreg['etypes'].etype_class('Personne')
   152         self.failIf(implements('Societe').score_class(cls, self.request()))
   152         self.failIf(is_instance('Societe').score_class(cls, self.request()))
   153 
   153 
   154 
   154 
   155 class MatchUserGroupsTC(CubicWebTC):
   155 class MatchUserGroupsTC(CubicWebTC):
   156     def test_owners_group(self):
   156     def test_owners_group(self):
   157         """tests usage of 'owners' group with match_user_group"""
   157         """tests usage of 'owners' group with match_user_group"""