ext/test/unittest_rest.py
changeset 9322 2dae5bf5ea68
parent 8852 59a29405688c
child 9517 3338b2205ea3
--- a/ext/test/unittest_rest.py	Wed Oct 16 11:57:47 2013 +0200
+++ b/ext/test/unittest_rest.py	Mon Sep 09 12:43:25 2013 +0200
@@ -1,4 +1,4 @@
-# copyright 2003-2012 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
+# copyright 2003-2013 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
 # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
 #
 # This file is part of CubicWeb.
@@ -82,5 +82,133 @@
         out = rest_publish(context, ':bookmark:`%s`' % eid)
         self.assertEqual(out, u'<p><h1>CWUser_plural</h1><div class="section"><a href="http://testing.fr/cubicweb/cwuser/admin" title="">admin</a></div><div class="section"><a href="http://testing.fr/cubicweb/cwuser/anon" title="">anon</a></div></p>\n')
 
+    def test_rqltable_nocontent(self):
+        context = self.context()
+        out = rest_publish(context, """.. rql-table::""")
+        self.assertIn("System Message: ERROR", out)
+        self.assertIn("Content block expected for the &quot;rql-table&quot; "
+                      "directive; none found" , out)
+
+    def test_rqltable_norset(self):
+        context = self.context()
+        rql = "Any X WHERE X is CWUser, X firstname 'franky'"
+        out = rest_publish(
+            context, """\
+.. rql-table::
+
+            %(rql)s""" % {'rql': rql})
+        self.assertIn("System Message: WARNING", out)
+        self.assertIn("empty result set", out)
+
+    def test_rqltable_nooptions(self):
+        rql = """Any S,F,L WHERE X is CWUser, X surname S,
+                                 X firstname F, X login L"""
+        out = rest_publish(
+            self.context(), """\
+.. rql-table::
+
+   %(rql)s
+            """ % {'rql': rql})
+        req = self.request()
+        view = self.vreg['views'].select('table', req, rset=req.execute(rql))
+        self.assertEqual(view.render(w=None)[49:], out[49:])
+
+    def test_rqltable_vid(self):
+        rql = """Any S,F,L WHERE X is CWUser, X surname S,
+                                 X firstname F, X login L"""
+        vid = 'mytable'
+        out = rest_publish(
+            self.context(), """\
+.. rql-table::
+   :vid: %(vid)s
+
+   %(rql)s
+            """ % {'rql': rql, 'vid': vid})
+        req = self.request()
+        view = self.vreg['views'].select(vid, req, rset=req.execute(rql))
+        self.assertEqual(view.render(w=None)[49:], out[49:])
+        self.assertIn(vid, out[:49])
+
+    def test_rqltable_badvid(self):
+        rql = """Any S,F,L WHERE X is CWUser, X surname S,
+                                 X firstname F, X login L"""
+        vid = 'mytabel'
+        out = rest_publish(
+            self.context(), """\
+.. rql-table::
+   :vid: %(vid)s
+
+   %(rql)s
+            """ % {'rql': rql, 'vid': vid})
+        self.assertIn("fail to select '%s' view" % vid, out)
+
+    def test_rqltable_headers(self):
+        rql = """Any S,F,L WHERE X is CWUser, X surname S,
+                                 X firstname F, X login L"""
+        headers = ["nom", "prenom", "identifiant"]
+        out = rest_publish(
+            self.context(), """\
+.. rql-table::
+   :headers: %(headers)s
+
+   %(rql)s
+            """ % {'rql': rql, 'headers': ', '.join(headers)})
+        req = self.request()
+        view = self.vreg['views'].select('table', req, rset=req.execute(rql))
+        view.headers = headers
+        self.assertEqual(view.render(w=None)[49:], out[49:])
+
+    def test_rqltable_headers_missing(self):
+        rql = """Any S,F,L WHERE X is CWUser, X surname S,
+                                 X firstname F, X login L"""
+        headers = ["nom", "", "identifiant"]
+        out = rest_publish(
+            self.context(), """\
+.. rql-table::
+   :headers: %(headers)s
+
+   %(rql)s
+            """ % {'rql': rql, 'headers': ', '.join(headers)})
+        req = self.request()
+        view = self.vreg['views'].select('table', req, rset=req.execute(rql))
+        view.headers = [headers[0], None, headers[2]]
+        self.assertEqual(view.render(w=None)[49:], out[49:])
+
+    def test_rqltable_headers_missing_edges(self):
+        rql = """Any S,F,L WHERE X is CWUser, X surname S,
+                                 X firstname F, X login L"""
+        headers = [" ", "prenom", ""]
+        out = rest_publish(
+            self.context(), """\
+.. rql-table::
+   :headers: %(headers)s
+
+   %(rql)s
+            """ % {'rql': rql, 'headers': ', '.join(headers)})
+        req = self.request()
+        view = self.vreg['views'].select('table', req, rset=req.execute(rql))
+        view.headers = [None, headers[1], None]
+        self.assertEqual(view.render(w=None)[49:], out[49:])
+
+    def test_rqltable_colvids(self):
+        rql = """Any X,S,F,L WHERE X is CWUser, X surname S,
+                                   X firstname F, X login L"""
+        colvids = {0: "oneline"}
+        out = rest_publish(
+            self.context(), """\
+.. rql-table::
+   :colvids: %(colvids)s
+
+   %(rql)s
+            """ % {'rql': rql,
+                   'colvids': ', '.join(["%d=%s" % (k, v)
+                                         for k, v in colvids.iteritems()])
+                  })
+        req = self.request()
+        view = self.vreg['views'].select('table', req, rset=req.execute(rql))
+        view.cellvids = colvids
+        self.assertEqual(view.render(w=None)[49:], out[49:])
+
+
 if __name__ == '__main__':
     unittest_main()