7 """ |
7 """ |
8 |
8 |
9 from logilab.common.testlib import TestCase, unittest_main |
9 from logilab.common.testlib import TestCase, unittest_main |
10 |
10 |
11 from cubicweb.devtools.testlib import EnvBasedTC |
11 from cubicweb.devtools.testlib import EnvBasedTC |
12 from cubicweb.vregistry import Selector, AndSelector, OrSelector |
12 from cubicweb.appobject import Selector, AndSelector, OrSelector |
13 from cubicweb.selectors import implements, match_user_groups |
13 from cubicweb.selectors import implements, match_user_groups |
14 from cubicweb.interfaces import IDownloadable |
14 from cubicweb.interfaces import IDownloadable |
15 from cubicweb.web import action |
15 from cubicweb.web import action |
16 |
16 |
17 class _1_(Selector): |
17 class _1_(Selector): |
89 |
89 |
90 |
90 |
91 class ImplementsSelectorTC(EnvBasedTC): |
91 class ImplementsSelectorTC(EnvBasedTC): |
92 def test_etype_priority(self): |
92 def test_etype_priority(self): |
93 req = self.request() |
93 req = self.request() |
94 cls = self.vreg.etype_class('File') |
94 cls = self.vreg['etypes'].etype_class('File') |
95 anyscore = implements('Any').score_class(cls, req) |
95 anyscore = implements('Any').score_class(cls, req) |
96 idownscore = implements(IDownloadable).score_class(cls, req) |
96 idownscore = implements(IDownloadable).score_class(cls, req) |
97 self.failUnless(idownscore > anyscore, (idownscore, anyscore)) |
97 self.failUnless(idownscore > anyscore, (idownscore, anyscore)) |
98 filescore = implements('File').score_class(cls, req) |
98 filescore = implements('File').score_class(cls, req) |
99 self.failUnless(filescore > idownscore, (filescore, idownscore)) |
99 self.failUnless(filescore > idownscore, (filescore, idownscore)) |
100 |
100 |
101 def test_etype_inheritance_no_yams_inheritance(self): |
101 def test_etype_inheritance_no_yams_inheritance(self): |
102 cls = self.vreg.etype_class('Personne') |
102 cls = self.vreg['etypes'].etype_class('Personne') |
103 self.failIf(implements('Societe').score_class(cls, self.request())) |
103 self.failIf(implements('Societe').score_class(cls, self.request())) |
104 |
104 |
105 |
105 |
106 class MatchUserGroupsTC(EnvBasedTC): |
106 class MatchUserGroupsTC(EnvBasedTC): |
107 def test_owners_group(self): |
107 def test_owners_group(self): |
109 class SomeAction(action.Action): |
109 class SomeAction(action.Action): |
110 id = 'yo' |
110 id = 'yo' |
111 category = 'foo' |
111 category = 'foo' |
112 __select__ = match_user_groups('owners') |
112 __select__ = match_user_groups('owners') |
113 self.vreg._loadedmods[__name__] = {} |
113 self.vreg._loadedmods[__name__] = {} |
114 self.vreg.register_vobject_class(SomeAction) |
114 self.vreg.register_appobject_class(SomeAction) |
115 self.failUnless(SomeAction in self.vreg['actions']['yo'], self.vreg['actions']) |
115 self.failUnless(SomeAction in self.vreg['actions']['yo'], self.vreg['actions']) |
116 try: |
116 try: |
117 # login as a simple user |
117 # login as a simple user |
118 self.create_user('john') |
118 self.create_user('john') |
119 self.login('john') |
119 self.login('john') |