20 from logilab.common.testlib import unittest_main |
20 from logilab.common.testlib import unittest_main |
21 from cubicweb.devtools.testlib import CubicWebTC |
21 from cubicweb.devtools.testlib import CubicWebTC |
22 |
22 |
23 from cubicweb.ext.rest import rest_publish |
23 from cubicweb.ext.rest import rest_publish |
24 |
24 |
|
25 |
25 class RestTC(CubicWebTC): |
26 class RestTC(CubicWebTC): |
26 |
27 |
27 def context(self, req): |
28 def context(self, req): |
28 return req.execute('CWUser X WHERE X login "admin"').get_entity(0, 0) |
29 return req.execute('CWUser X WHERE X login "admin"').get_entity(0, 0) |
29 |
30 |
30 def test_eid_role(self): |
31 def test_eid_role(self): |
31 with self.admin_access.web_request() as req: |
32 with self.admin_access.web_request() as req: |
32 context = self.context(req) |
33 context = self.context(req) |
33 self.assertEqual(rest_publish(context, ':eid:`%s`' % context.eid), |
34 self.assertEqual(rest_publish(context, ':eid:`%s`' % context.eid), |
34 '<p><a class="reference" href="http://testing.fr/cubicweb/cwuser/admin">' |
35 '<p><a class="reference"' |
|
36 ' href="http://testing.fr/cubicweb/cwuser/admin">' |
35 '#%s</a></p>\n' % context.eid) |
37 '#%s</a></p>\n' % context.eid) |
36 self.assertEqual(rest_publish(context, ':eid:`%s:some text`' % context.eid), |
38 self.assertEqual(rest_publish(context, ':eid:`%s:some text`' % context.eid), |
37 '<p><a class="reference" href="http://testing.fr/cubicweb/cwuser/admin">' |
39 '<p><a class="reference"' |
|
40 ' href="http://testing.fr/cubicweb/cwuser/admin">' |
38 'some text</a></p>\n') |
41 'some text</a></p>\n') |
39 |
42 |
40 def test_bad_rest_no_crash(self): |
43 def test_bad_rest_no_crash(self): |
41 with self.admin_access.web_request() as req: |
44 with self.admin_access.web_request() as req: |
42 rest_publish(self.context(req), ''' |
45 rest_publish(self.context(req), ''' |
70 self.assertNotIn('colspan', value) |
73 self.assertNotIn('colspan', value) |
71 |
74 |
72 def test_rql_role_with_vid(self): |
75 def test_rql_role_with_vid(self): |
73 with self.admin_access.web_request() as req: |
76 with self.admin_access.web_request() as req: |
74 context = self.context(req) |
77 context = self.context(req) |
75 out = rest_publish(context, ':rql:`Any X ORDERBY XL WHERE X is CWUser, X login XL:table`') |
78 out = rest_publish(context, |
|
79 ':rql:`Any X ORDERBY XL WHERE X is CWUser, X login XL:table`') |
76 self.assertTrue(out.endswith('<a href="http://testing.fr/cubicweb/cwuser/anon" ' |
80 self.assertTrue(out.endswith('<a href="http://testing.fr/cubicweb/cwuser/anon" ' |
77 'title="">anon</a></td></tr>\n</tbody></table>' |
81 'title="">anon</a></td></tr>\n</tbody></table>' |
78 '</div></p>\n')) |
82 '</div></p>\n')) |
79 |
83 |
80 def test_rql_role_with_vid_empty_rset(self): |
84 def test_rql_role_with_vid_empty_rset(self): |
120 with self.admin_access.web_request() as req: |
124 with self.admin_access.web_request() as req: |
121 context = self.context(req) |
125 context = self.context(req) |
122 out = rest_publish(context, """.. rql-table::""") |
126 out = rest_publish(context, """.. rql-table::""") |
123 self.assertIn("System Message: ERROR", out) |
127 self.assertIn("System Message: ERROR", out) |
124 self.assertIn("Content block expected for the "rql-table" " |
128 self.assertIn("Content block expected for the "rql-table" " |
125 "directive; none found" , out) |
129 "directive; none found", out) |
126 |
130 |
127 def test_rqltable_norset(self): |
131 def test_rqltable_norset(self): |
128 with self.admin_access.web_request() as req: |
132 with self.admin_access.web_request() as req: |
129 context = self.context(req) |
133 context = self.context(req) |
130 rql = "Any X WHERE X is CWUser, X firstname 'franky'" |
134 rql = "Any X WHERE X is CWUser, X firstname 'franky'" |
229 self.context(req), """\ |
233 self.context(req), """\ |
230 .. rql-table:: |
234 .. rql-table:: |
231 :colvids: %(colvids)s |
235 :colvids: %(colvids)s |
232 |
236 |
233 %(rql)s |
237 %(rql)s |
234 """ % {'rql': rql, |
238 """ |
235 'colvids': ', '.join(["%d=%s" % (k, v) |
239 % {'rql': rql, |
236 for k, v in colvids.items()]) |
240 'colvids': ', '.join(["%d=%s" % (k, v) |
237 }) |
241 for k, v in colvids.items()])} |
|
242 ) |
238 view = self.vreg['views'].select('table', req, rset=req.execute(rql)) |
243 view = self.vreg['views'].select('table', req, rset=req.execute(rql)) |
239 view.cellvids = colvids |
244 view.cellvids = colvids |
240 self.assertEqual(view.render(w=None)[49:], out[49:]) |
245 self.assertEqual(view.render(w=None)[49:], out[49:]) |
241 |
246 |
242 |
247 |