7 """ |
7 """ |
8 from cubicweb.devtools import init_test_database |
8 from cubicweb.devtools import init_test_database |
9 from cubicweb.devtools.repotest import BasePlannerTC, test_plan |
9 from cubicweb.devtools.repotest import BasePlannerTC, test_plan |
10 from cubicweb.server.ssplanner import SSPlanner |
10 from cubicweb.server.ssplanner import SSPlanner |
11 |
11 |
12 # keep cnx so it's not garbage collected and the associated session is closed |
12 # keep cnx so it's not garbage collected and the associated session closed |
13 repo, cnx = init_test_database('sqlite') |
13 repo, cnx = init_test_database('sqlite') |
14 |
14 |
15 class SSPlannerTC(BasePlannerTC): |
15 class SSPlannerTC(BasePlannerTC): |
16 repo = repo |
16 repo = repo |
17 _test = test_plan |
17 _test = test_plan |
18 |
18 |
19 def setUp(self): |
19 def setUp(self): |
20 BasePlannerTC.setUp(self) |
20 BasePlannerTC.setUp(self) |
21 self.planner = SSPlanner(self.o.schema, self.o._rqlhelper) |
21 self.planner = SSPlanner(self.o.schema, self.repo.vreg.rqlhelper) |
22 self.system = self.o._repo.system_source |
22 self.system = self.o._repo.system_source |
23 |
23 |
24 def tearDown(self): |
24 def tearDown(self): |
25 BasePlannerTC.tearDown(self) |
25 BasePlannerTC.tearDown(self) |
26 |
26 |
27 def test_ordered_ambigous_sol(self): |
27 def test_ordered_ambigous_sol(self): |
28 self._test('Any XN ORDERBY XN WHERE X name XN', |
28 self._test('Any XN ORDERBY XN WHERE X name XN, X is IN (Basket, File, Folder)', |
29 [('OneFetchStep', [('Any XN ORDERBY XN WHERE X name XN', |
29 [('OneFetchStep', [('Any XN ORDERBY XN WHERE X name XN, X is IN(Basket, File, Folder)', |
30 [{'X': 'Basket', 'XN': 'String'}, |
30 [{'X': 'Basket', 'XN': 'String'}, |
31 {'X': 'CWCache', 'XN': 'String'}, |
|
32 {'X': 'CWConstraintType', 'XN': 'String'}, |
|
33 {'X': 'CWEType', 'XN': 'String'}, |
|
34 {'X': 'CWGroup', 'XN': 'String'}, |
|
35 {'X': 'CWPermission', 'XN': 'String'}, |
|
36 {'X': 'CWRType', 'XN': 'String'}, |
|
37 {'X': 'File', 'XN': 'String'}, |
31 {'X': 'File', 'XN': 'String'}, |
38 {'X': 'Folder', 'XN': 'String'}, |
32 {'X': 'Folder', 'XN': 'String'}])], |
39 {'X': 'Image', 'XN': 'String'}, |
|
40 {'X': 'State', 'XN': 'String'}, |
|
41 {'X': 'Tag', u'XN': 'String'}, |
|
42 {'X': 'Transition', 'XN': 'String'}])], |
|
43 None, None, |
33 None, None, |
44 [self.system], None, [])]) |
34 [self.system], None, [])]) |
45 |
35 |
46 def test_groupeded_ambigous_sol(self): |
36 def test_groupeded_ambigous_sol(self): |
47 self._test('Any XN,COUNT(X) GROUPBY XN WHERE X name XN', |
37 self._test('Any XN,COUNT(X) GROUPBY XN WHERE X name XN, X is IN (Basket, File, Folder)', |
48 [('OneFetchStep', [('Any XN,COUNT(X) GROUPBY XN WHERE X name XN', |
38 [('OneFetchStep', [('Any XN,COUNT(X) GROUPBY XN WHERE X name XN, X is IN(Basket, File, Folder)', |
49 [{'X': 'Basket', 'XN': 'String'}, |
39 [{'X': 'Basket', 'XN': 'String'}, |
50 {'X': 'CWCache', 'XN': 'String'}, |
|
51 {'X': 'CWConstraintType', 'XN': 'String'}, |
|
52 {'X': 'CWEType', 'XN': 'String'}, |
|
53 {'X': 'CWGroup', 'XN': 'String'}, |
|
54 {'X': 'CWPermission', 'XN': 'String'}, |
|
55 {'X': 'CWRType', 'XN': 'String'}, |
|
56 {'X': 'File', 'XN': 'String'}, |
40 {'X': 'File', 'XN': 'String'}, |
57 {'X': 'Folder', 'XN': 'String'}, |
41 {'X': 'Folder', 'XN': 'String'}])], |
58 {'X': 'Image', 'XN': 'String'}, |
|
59 {'X': 'State', 'XN': 'String'}, |
|
60 {'X': 'Tag', u'XN': 'String'}, |
|
61 {'X': 'Transition', 'XN': 'String'}])], |
|
62 None, None, |
42 None, None, |
63 [self.system], None, [])]) |
43 [self.system], None, [])]) |
64 |
44 |
65 if __name__ == '__main__': |
45 if __name__ == '__main__': |
66 from logilab.common.testlib import unittest_main |
46 from logilab.common.testlib import unittest_main |