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""" |