48 # selection is cluttered because rqlst has been prepared for facet (it |
48 # selection is cluttered because rqlst has been prepared for facet (it |
49 # is not in real life) |
49 # is not in real life) |
50 self.assertEqual(f.select.as_string(), |
50 self.assertEqual(f.select.as_string(), |
51 'DISTINCT Any WHERE X is CWUser, X in_group D, D eid %s' % guests) |
51 'DISTINCT Any WHERE X is CWUser, X in_group D, D eid %s' % guests) |
52 |
52 |
|
53 def test_relation_multiple_and(self): |
|
54 f, (guests, managers) = self._in_group_facet() |
|
55 f._cw.form[f.__regid__] = [str(guests), str(managers)] |
|
56 f._cw.form[f.__regid__ + '_andor'] = 'AND' |
|
57 f.add_rql_restrictions() |
|
58 self.assertEqual(f.select.as_string(), |
|
59 'DISTINCT Any WHERE X is CWUser, X in_group A, B eid %s, X in_group B, A eid %s' % (guests, managers)) |
|
60 |
|
61 def test_relation_multiple_or(self): |
|
62 f, (guests, managers) = self._in_group_facet() |
|
63 f._cw.form[f.__regid__] = [str(guests), str(managers)] |
|
64 f._cw.form[f.__regid__ + '_andor'] = 'OR' |
|
65 f.add_rql_restrictions() |
|
66 self.assertEqual(f.select.as_string(), |
|
67 'DISTINCT Any WHERE X is CWUser, X in_group A, A eid IN(%s, %s)' % (guests, managers)) |
|
68 |
53 def test_relation_optional_rel(self): |
69 def test_relation_optional_rel(self): |
54 req = self.request() |
70 req = self.request() |
55 rset = self.execute('Any X,GROUP_CONCAT(GN) GROUPBY X ' |
71 rset = self.execute('Any X,GROUP_CONCAT(GN) GROUPBY X ' |
56 'WHERE X in_group G?, G name GN, NOT G name "users"') |
72 'WHERE X in_group G?, G name GN, NOT G name "users"') |
57 rqlst = rset.syntax_tree().copy() |
73 rqlst = rset.syntax_tree().copy() |