ext/test/unittest_rest.py
changeset 9322 2dae5bf5ea68
parent 8852 59a29405688c
child 9517 3338b2205ea3
equal deleted inserted replaced
9321:212869484c65 9322:2dae5bf5ea68
     1 # copyright 2003-2012 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
     1 # copyright 2003-2013 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
     2 # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
     2 # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
     3 #
     3 #
     4 # This file is part of CubicWeb.
     4 # This file is part of CubicWeb.
     5 #
     5 #
     6 # CubicWeb is free software: you can redistribute it and/or modify it under the
     6 # CubicWeb is free software: you can redistribute it and/or modify it under the
    80         rset = self.execute('INSERT Bookmark X: X title "hello", X path "/view?rql=Any X WHERE X is CWUser"')
    80         rset = self.execute('INSERT Bookmark X: X title "hello", X path "/view?rql=Any X WHERE X is CWUser"')
    81         eid = rset[0][0]
    81         eid = rset[0][0]
    82         out = rest_publish(context, ':bookmark:`%s`' % eid)
    82         out = rest_publish(context, ':bookmark:`%s`' % eid)
    83         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')
    83         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')
    84 
    84 
       
    85     def test_rqltable_nocontent(self):
       
    86         context = self.context()
       
    87         out = rest_publish(context, """.. rql-table::""")
       
    88         self.assertIn("System Message: ERROR", out)
       
    89         self.assertIn("Content block expected for the &quot;rql-table&quot; "
       
    90                       "directive; none found" , out)
       
    91 
       
    92     def test_rqltable_norset(self):
       
    93         context = self.context()
       
    94         rql = "Any X WHERE X is CWUser, X firstname 'franky'"
       
    95         out = rest_publish(
       
    96             context, """\
       
    97 .. rql-table::
       
    98 
       
    99             %(rql)s""" % {'rql': rql})
       
   100         self.assertIn("System Message: WARNING", out)
       
   101         self.assertIn("empty result set", out)
       
   102 
       
   103     def test_rqltable_nooptions(self):
       
   104         rql = """Any S,F,L WHERE X is CWUser, X surname S,
       
   105                                  X firstname F, X login L"""
       
   106         out = rest_publish(
       
   107             self.context(), """\
       
   108 .. rql-table::
       
   109 
       
   110    %(rql)s
       
   111             """ % {'rql': rql})
       
   112         req = self.request()
       
   113         view = self.vreg['views'].select('table', req, rset=req.execute(rql))
       
   114         self.assertEqual(view.render(w=None)[49:], out[49:])
       
   115 
       
   116     def test_rqltable_vid(self):
       
   117         rql = """Any S,F,L WHERE X is CWUser, X surname S,
       
   118                                  X firstname F, X login L"""
       
   119         vid = 'mytable'
       
   120         out = rest_publish(
       
   121             self.context(), """\
       
   122 .. rql-table::
       
   123    :vid: %(vid)s
       
   124 
       
   125    %(rql)s
       
   126             """ % {'rql': rql, 'vid': vid})
       
   127         req = self.request()
       
   128         view = self.vreg['views'].select(vid, req, rset=req.execute(rql))
       
   129         self.assertEqual(view.render(w=None)[49:], out[49:])
       
   130         self.assertIn(vid, out[:49])
       
   131 
       
   132     def test_rqltable_badvid(self):
       
   133         rql = """Any S,F,L WHERE X is CWUser, X surname S,
       
   134                                  X firstname F, X login L"""
       
   135         vid = 'mytabel'
       
   136         out = rest_publish(
       
   137             self.context(), """\
       
   138 .. rql-table::
       
   139    :vid: %(vid)s
       
   140 
       
   141    %(rql)s
       
   142             """ % {'rql': rql, 'vid': vid})
       
   143         self.assertIn("fail to select '%s' view" % vid, out)
       
   144 
       
   145     def test_rqltable_headers(self):
       
   146         rql = """Any S,F,L WHERE X is CWUser, X surname S,
       
   147                                  X firstname F, X login L"""
       
   148         headers = ["nom", "prenom", "identifiant"]
       
   149         out = rest_publish(
       
   150             self.context(), """\
       
   151 .. rql-table::
       
   152    :headers: %(headers)s
       
   153 
       
   154    %(rql)s
       
   155             """ % {'rql': rql, 'headers': ', '.join(headers)})
       
   156         req = self.request()
       
   157         view = self.vreg['views'].select('table', req, rset=req.execute(rql))
       
   158         view.headers = headers
       
   159         self.assertEqual(view.render(w=None)[49:], out[49:])
       
   160 
       
   161     def test_rqltable_headers_missing(self):
       
   162         rql = """Any S,F,L WHERE X is CWUser, X surname S,
       
   163                                  X firstname F, X login L"""
       
   164         headers = ["nom", "", "identifiant"]
       
   165         out = rest_publish(
       
   166             self.context(), """\
       
   167 .. rql-table::
       
   168    :headers: %(headers)s
       
   169 
       
   170    %(rql)s
       
   171             """ % {'rql': rql, 'headers': ', '.join(headers)})
       
   172         req = self.request()
       
   173         view = self.vreg['views'].select('table', req, rset=req.execute(rql))
       
   174         view.headers = [headers[0], None, headers[2]]
       
   175         self.assertEqual(view.render(w=None)[49:], out[49:])
       
   176 
       
   177     def test_rqltable_headers_missing_edges(self):
       
   178         rql = """Any S,F,L WHERE X is CWUser, X surname S,
       
   179                                  X firstname F, X login L"""
       
   180         headers = [" ", "prenom", ""]
       
   181         out = rest_publish(
       
   182             self.context(), """\
       
   183 .. rql-table::
       
   184    :headers: %(headers)s
       
   185 
       
   186    %(rql)s
       
   187             """ % {'rql': rql, 'headers': ', '.join(headers)})
       
   188         req = self.request()
       
   189         view = self.vreg['views'].select('table', req, rset=req.execute(rql))
       
   190         view.headers = [None, headers[1], None]
       
   191         self.assertEqual(view.render(w=None)[49:], out[49:])
       
   192 
       
   193     def test_rqltable_colvids(self):
       
   194         rql = """Any X,S,F,L WHERE X is CWUser, X surname S,
       
   195                                    X firstname F, X login L"""
       
   196         colvids = {0: "oneline"}
       
   197         out = rest_publish(
       
   198             self.context(), """\
       
   199 .. rql-table::
       
   200    :colvids: %(colvids)s
       
   201 
       
   202    %(rql)s
       
   203             """ % {'rql': rql,
       
   204                    'colvids': ', '.join(["%d=%s" % (k, v)
       
   205                                          for k, v in colvids.iteritems()])
       
   206                   })
       
   207         req = self.request()
       
   208         view = self.vreg['views'].select('table', req, rset=req.execute(rql))
       
   209         view.cellvids = colvids
       
   210         self.assertEqual(view.render(w=None)[49:], out[49:])
       
   211 
       
   212 
    85 if __name__ == '__main__':
   213 if __name__ == '__main__':
    86     unittest_main()
   214     unittest_main()