web/test/unittest_views_baseviews.py
brancholdstable
changeset 6665 90f2f20367bc
parent 6340 470d8e828fda
child 7187 496f51b92154
equal deleted inserted replaced
6018:f4d1d5d9ccbb 6665:90f2f20367bc
    13 # FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
    13 # FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
    14 # details.
    14 # details.
    15 #
    15 #
    16 # You should have received a copy of the GNU Lesser General Public License along
    16 # You should have received a copy of the GNU Lesser General Public License along
    17 # with CubicWeb.  If not, see <http://www.gnu.org/licenses/>.
    17 # with CubicWeb.  If not, see <http://www.gnu.org/licenses/>.
    18 """
       
    19 
    18 
    20 """
       
    21 from logilab.common.testlib import unittest_main
    19 from logilab.common.testlib import unittest_main
    22 from logilab.mtconverter import html_unescape
    20 from logilab.mtconverter import html_unescape
    23 
    21 
    24 from cubicweb.devtools.testlib import CubicWebTC
    22 from cubicweb.devtools.testlib import CubicWebTC
    25 
    23 from cubicweb.utils import json
    26 from cubicweb.web.htmlwidgets import TableWidget
    24 from cubicweb.web.htmlwidgets import TableWidget
    27 from cubicweb.web.views import vid_from_rset
    25 from cubicweb.web.views import vid_from_rset
    28 from cubicweb.web import json
       
    29 loads = json.loads
       
    30 
    26 
    31 def loadjson(value):
    27 def loadjson(value):
    32     return loads(html_unescape(value))
    28     return json.loads(html_unescape(value))
    33 
    29 
    34 class VidFromRsetTC(CubicWebTC):
    30 class VidFromRsetTC(CubicWebTC):
    35 
    31 
    36     def test_no_rset(self):
    32     def test_no_rset(self):
    37         req = self.request()
    33         req = self.request()
    38         self.assertEquals(vid_from_rset(req, None, self.schema), 'index')
    34         self.assertEqual(vid_from_rset(req, None, self.schema), 'index')
    39 
    35 
    40     def test_no_entity(self):
    36     def test_no_entity(self):
    41         req = self.request()
    37         req = self.request()
    42         rset = self.execute('Any X WHERE X login "blabla"')
    38         rset = self.execute('Any X WHERE X login "blabla"')
    43         self.assertEquals(vid_from_rset(req, rset, self.schema), 'noresult')
    39         self.assertEqual(vid_from_rset(req, rset, self.schema), 'noresult')
    44 
    40 
    45     def test_one_entity(self):
    41     def test_one_entity(self):
    46         req = self.request()
    42         req = self.request()
    47         rset = self.execute('Any X WHERE X login "admin"')
    43         rset = self.execute('Any X WHERE X login "admin"')
    48         self.assertEquals(vid_from_rset(req, rset, self.schema), 'primary')
    44         self.assertEqual(vid_from_rset(req, rset, self.schema), 'primary')
    49         rset = self.execute('Any X, L WHERE X login "admin", X login L')
    45         rset = self.execute('Any X, L WHERE X login "admin", X login L')
    50         self.assertEquals(vid_from_rset(req, rset, self.schema), 'primary')
    46         self.assertEqual(vid_from_rset(req, rset, self.schema), 'primary')
    51         req.search_state = ('pasnormal',)
    47         req.search_state = ('pasnormal',)
    52         rset = self.execute('Any X WHERE X login "admin"')
    48         rset = self.execute('Any X WHERE X login "admin"')
    53         self.assertEquals(vid_from_rset(req, rset, self.schema), 'outofcontext-search')
    49         self.assertEqual(vid_from_rset(req, rset, self.schema), 'outofcontext-search')
    54 
    50 
    55     def test_one_entity_eid(self):
    51     def test_one_entity_eid(self):
    56         req = self.request()
    52         req = self.request()
    57         rset = self.execute('Any X WHERE X eid 1')
    53         rset = self.execute('Any X WHERE X eid 1')
    58         self.assertEquals(vid_from_rset(req, rset, self.schema), 'primary')
    54         self.assertEqual(vid_from_rset(req, rset, self.schema), 'primary')
    59 
    55 
    60     def test_more_than_one_entity_same_type(self):
    56     def test_more_than_one_entity_same_type(self):
    61         req = self.request()
    57         req = self.request()
    62         rset = self.execute('Any X WHERE X is CWUser')
    58         rset = self.execute('Any X WHERE X is CWUser')
    63         self.assertEquals(vid_from_rset(req, rset, self.schema), 'sameetypelist')
    59         self.assertEqual(vid_from_rset(req, rset, self.schema), 'sameetypelist')
    64         rset = self.execute('Any X, L WHERE X login L')
    60         rset = self.execute('Any X, L WHERE X login L')
    65         self.assertEquals(vid_from_rset(req, rset, self.schema), 'sameetypelist')
    61         self.assertEqual(vid_from_rset(req, rset, self.schema), 'sameetypelist')
    66 
    62 
    67     def test_more_than_one_entity_diff_type(self):
    63     def test_more_than_one_entity_diff_type(self):
    68         req = self.request()
    64         req = self.request()
    69         rset = self.execute('Any X WHERE X is IN (CWUser, CWGroup)')
    65         rset = self.execute('Any X WHERE X is IN (CWUser, CWGroup)')
    70         self.assertEquals(vid_from_rset(req, rset, self.schema), 'list')
    66         self.assertEqual(vid_from_rset(req, rset, self.schema), 'list')
    71 
    67 
    72     def test_more_than_one_entity_by_row(self):
    68     def test_more_than_one_entity_by_row(self):
    73         req = self.request()
    69         req = self.request()
    74         rset = self.execute('Any X, G WHERE X in_group G')
    70         rset = self.execute('Any X, G WHERE X in_group G')
    75         self.assertEquals(vid_from_rset(req, rset, self.schema), 'table')
    71         self.assertEqual(vid_from_rset(req, rset, self.schema), 'table')
    76 
    72 
    77     def test_more_than_one_entity_by_row_2(self):
    73     def test_more_than_one_entity_by_row_2(self):
    78         req = self.request()
    74         req = self.request()
    79         rset = self.execute('Any X, GN WHERE X in_group G, G name GN')
    75         rset = self.execute('Any X, GN WHERE X in_group G, G name GN')
    80         self.assertEquals(vid_from_rset(req, rset, self.schema), 'table')
    76         self.assertEqual(vid_from_rset(req, rset, self.schema), 'table')
    81 
    77 
    82     def test_aggregat(self):
    78     def test_aggregat(self):
    83         req = self.request()
    79         req = self.request()
    84         rset = self.execute('Any X, COUNT(T) GROUPBY X WHERE X is T')
    80         rset = self.execute('Any X, COUNT(T) GROUPBY X WHERE X is T')
    85         self.assertEquals(vid_from_rset(req, rset, self.schema), 'table')
    81         self.assertEqual(vid_from_rset(req, rset, self.schema), 'table')
    86         rset = self.execute('Any MAX(X) WHERE X is CWUser')
    82         rset = self.execute('Any MAX(X) WHERE X is CWUser')
    87         self.assertEquals(vid_from_rset(req, rset, self.schema), 'table')
    83         self.assertEqual(vid_from_rset(req, rset, self.schema), 'table')
    88 
    84 
    89     def test_subquery(self):
    85     def test_subquery(self):
    90         rset = self.execute(
    86         rset = self.execute(
    91 'DISTINCT Any X,N ORDERBY N '
    87 'DISTINCT Any X,N ORDERBY N '
    92 'WITH X,N BEING ('
    88 'WITH X,N BEING ('
    93 '     (DISTINCT Any P,N WHERE P is CWUser, P login N)'
    89 '     (DISTINCT Any P,N WHERE P is CWUser, P login N)'
    94 '       UNION'
    90 '       UNION'
    95 '     (DISTINCT Any W,N WHERE W is CWGroup, W name N))')
    91 '     (DISTINCT Any W,N WHERE W is CWGroup, W name N))')
    96         req = self.request()
    92         req = self.request()
    97         self.assertEquals(vid_from_rset(req, rset, self.schema), 'table')
    93         self.assertEqual(vid_from_rset(req, rset, self.schema), 'table')
    98 
    94 
    99 
    95 
   100 class TableViewTC(CubicWebTC):
    96 class TableViewTC(CubicWebTC):
   101 
    97 
   102     def _prepare_entity(self):
    98     def _prepare_entity(self):
   106                            {'x': e.eid})
   102                            {'x': e.eid})
   107         view = self.vreg['views'].select('table', req, rset=rset)
   103         view = self.vreg['views'].select('table', req, rset=rset)
   108         return e, rset, view
   104         return e, rset, view
   109 
   105 
   110     def test_headers(self):
   106     def test_headers(self):
   111         self.skip('implement me')
   107         self.skipTest('implement me')
   112 
   108 
   113     def test_sortvalue(self):
   109     def test_sortvalue(self):
   114         e, _, view = self._prepare_entity()
   110         e, _, view = self._prepare_entity()
   115         expected = ['<toto>', 'loo"ong blabla'[:10], e.creation_date.strftime('%Y/%m/%d %H:%M:%S')]
   111         expected = ['<toto>', 'loo"ong blabla'[:10], e.creation_date.strftime('%Y/%m/%d %H:%M:%S')]
   116         got = [loadjson(view.sortvalue(0, i)) for i in xrange(3)]
   112         got = [loadjson(view.sortvalue(0, i)) for i in xrange(3)]