--- a/web/test/unittest_facet.py Tue Jul 05 10:52:34 2011 +0200
+++ b/web/test/unittest_facet.py Tue Jul 05 10:54:52 2011 +0200
@@ -45,7 +45,7 @@
# selection is cluttered because rqlst has been prepared for facet (it
# is not in real life)
self.assertEqual(f.select.as_string(),
- 'DISTINCT Any WHERE X is CWUser, X in_group D, D eid %s' % guests)
+ 'DISTINCT Any WHERE X is CWUser, X in_group D, D eid %s' % guests)
def test_relation_optional_rel(self):
req = self.request()
@@ -176,6 +176,52 @@
self.assertEqual(f.select.as_string(),
"DISTINCT Any WHERE X is CWUser, X login 'admin'")
+ def test_rql_path_eid(self):
+ req, rset, rqlst, filtered_variable = self.prepare_rqlst()
+ facet.RQLPathFacet.path = [('X created_by U'), ('U owned_by O'), ('O login OL')]
+ f = facet.RQLPathFacet(req, rset=rset,
+ select=rqlst.children[0],
+ filtered_variable=filtered_variable)
+ f.filter_variable = 'O'
+ f.label_variable = 'OL'
+
+ self.assertEqual(f.vocabulary(), [(u'admin', self.user().eid),])
+ # ensure rqlst is left unmodified
+ self.assertEqual(rqlst.as_string(), 'DISTINCT Any WHERE X is CWUser')
+ #rqlst = rset.syntax_tree()
+ self.assertEqual(f.possible_values(),
+ [str(self.user().eid),])
+ # ensure rqlst is left unmodified
+ self.assertEqual(rqlst.as_string(), 'DISTINCT Any WHERE X is CWUser')
+ req.form[f.__regid__] = '1'
+ f.add_rql_restrictions()
+ # selection is cluttered because rqlst has been prepared for facet (it
+ # is not in real life)
+ self.assertEqual(f.select.as_string(),
+ "DISTINCT Any WHERE X is CWUser, X created_by F, F owned_by G, G eid 1")
+
+ def test_rql_path_attr(self):
+ req, rset, rqlst, filtered_variable = self.prepare_rqlst()
+ facet.RQLPathFacet.path = [('X created_by U'), ('U owned_by O'), ('O login OL')]
+ f = facet.RQLPathFacet(req, rset=rset,
+ select=rqlst.children[0],
+ filtered_variable=filtered_variable)
+ f.filter_variable = 'OL'
+
+ self.assertEqual(f.vocabulary(), [(u'admin', 'admin'),])
+ # ensure rqlst is left unmodified
+ self.assertEqual(rqlst.as_string(), 'DISTINCT Any WHERE X is CWUser')
+ #rqlst = rset.syntax_tree()
+ self.assertEqual(f.possible_values(), ['admin',])
+ # ensure rqlst is left unmodified
+ self.assertEqual(rqlst.as_string(), 'DISTINCT Any WHERE X is CWUser')
+ req.form[f.__regid__] = 'admin'
+ f.add_rql_restrictions()
+ # selection is cluttered because rqlst has been prepared for facet (it
+ # is not in real life)
+ self.assertEqual(f.select.as_string(),
+ "DISTINCT Any WHERE X is CWUser, X created_by G, G owned_by H, H login 'admin'")
+
if __name__ == '__main__':
from logilab.common.testlib import unittest_main