diff -r 847db4c91061 -r 8510e14335e1 test/unittest_selectors.py --- a/test/unittest_selectors.py Wed Feb 18 13:41:07 2009 +0100 +++ b/test/unittest_selectors.py Wed Feb 18 13:41:55 2009 +0100 @@ -8,6 +8,9 @@ from logilab.common.testlib import TestCase, unittest_main from cubicweb.vregistry import Selector, AndSelector, OrSelector +from cubicweb.selectors import implements + +from cubicweb.interfaces import IDownloadable class _1_(Selector): def __call__(self, *args, **kwargs): @@ -74,7 +77,26 @@ self.assertEquals(len(selector.selectors), 2) self.assertEquals(selector(None), 2) + def test_search_selectors(self): + sel = implements('something') + self.assertIs(sel.search_selector(implements), sel) + csel = AndSelector(sel, Selector()) + self.assertIs(csel.search_selector(implements), sel) + csel = AndSelector(Selector(), sel) + self.assertIs(csel.search_selector(implements), sel) + +from cubicweb.devtools.testlib import EnvBasedTC +class ImplementsSelectorTC(EnvBasedTC): + def test_etype_priority(self): + req = self.request() + cls = self.vreg.etype_class('File') + anyscore = implements('Any').score_class(cls, req) + idownscore = implements(IDownloadable).score_class(cls, req) + self.failUnless(idownscore > anyscore, (idownscore, anyscore)) + filescore = implements('File').score_class(cls, req) + self.failUnless(filescore > idownscore, (filescore, idownscore)) + if __name__ == '__main__': unittest_main()