cubicweb/web/test/unittest_views_editforms.py
changeset 11964 01eeea97e549
parent 11240 1694e6e9ff94
child 12091 3c9e296f0a6a
equal deleted inserted replaced
11963:64ecd4d96ac7 11964:01eeea97e549
    18 
    18 
    19 from logilab.common.testlib import unittest_main, mock_object
    19 from logilab.common.testlib import unittest_main, mock_object
    20 from logilab.common import tempattr
    20 from logilab.common import tempattr
    21 
    21 
    22 from cubicweb.devtools.testlib import CubicWebTC
    22 from cubicweb.devtools.testlib import CubicWebTC
       
    23 from cubicweb.predicates import is_instance
    23 from cubicweb.web.views import uicfg
    24 from cubicweb.web.views import uicfg
       
    25 from cubicweb.web.views.editforms import DeleteConfFormView
    24 from cubicweb.web.formwidgets import AutoCompletionWidget
    26 from cubicweb.web.formwidgets import AutoCompletionWidget
    25 from cubicweb.schema import RRQLExpression
    27 from cubicweb.schema import RRQLExpression
    26 
    28 
    27 
    29 
    28 AFFK = uicfg.autoform_field_kwargs
    30 AFFK = uicfg.autoform_field_kwargs
   237     def test_delete_conf_formview(self):
   239     def test_delete_conf_formview(self):
   238         with self.admin_access.web_request() as req:
   240         with self.admin_access.web_request() as req:
   239             rset = req.execute('CWGroup X')
   241             rset = req.execute('CWGroup X')
   240             self.view('deleteconf', rset, template=None, req=req).source
   242             self.view('deleteconf', rset, template=None, req=req).source
   241 
   243 
       
   244     def test_delete_conf_formview_composite(self):
       
   245         with self.admin_access.cnx() as cnx:
       
   246             d1 = cnx.create_entity('Directory', name=u'dtest1')
       
   247             d2 = cnx.create_entity('Directory', name=u'dtest2', parent=d1)
       
   248             d3 = cnx.create_entity('Directory', name=u'dtest3', parent=d2)
       
   249             d4 = cnx.create_entity('Directory', name=u'dtest4', parent=d1)
       
   250             for i in range(3):
       
   251                 cnx.create_entity('Directory', name=u'child%s' % (i,),
       
   252                                   parent=d3)
       
   253             cnx.commit()
       
   254 
       
   255         class DirectoryDeleteView(DeleteConfFormView):
       
   256             __select__ = (DeleteConfFormView.__select__ &
       
   257                           is_instance('Directory'))
       
   258             show_composite = True
       
   259 
       
   260         self.vreg['propertyvalues']['navigation.page-size'] = 3
       
   261         with self.admin_access.web_request() as req, \
       
   262                 self.temporary_appobjects(DirectoryDeleteView):
       
   263             rset = req.execute('Directory X WHERE X name "dtest1"')
       
   264             source = self.view('deleteconf', rset,
       
   265                                template=None, req=req).source.decode('utf-8')
       
   266             # Show composite object at depth 1
       
   267             # Don't display "And more composite entities" since their are equal
       
   268             # to page size
       
   269             expected = (
       
   270                 '<li>'
       
   271                 '<a href="http://testing.fr/cubicweb/directory/%s">dtest1</a>'
       
   272                 '<ul class="treeview"><li>'
       
   273                 '<a href="http://testing.fr/cubicweb/directory/%s">dtest4</a>'
       
   274                 '</li><li class="last">'
       
   275                 '<a href="http://testing.fr/cubicweb/directory/%s">dtest2</a>'
       
   276                 '</li></ul></li>') % (d1.eid, d4.eid, d2.eid)
       
   277             self.assertIn(expected, source)
       
   278 
       
   279             # Page size is reached, show "And more composite entities"
       
   280             rset = req.execute('Directory X WHERE X name "dtest3"')
       
   281             source = self.view('deleteconf', rset,
       
   282                                template=None, req=req).source.decode('utf-8')
       
   283             expected = (
       
   284                 '<li>'
       
   285                 '<a href="http://testing.fr/cubicweb/directory/%s">dtest3</a>'
       
   286                 '<ul class="treeview"><li>'
       
   287                 '<a href="http://testing.fr/cubicweb/directory/%s">child2</a>'
       
   288                 '</li><li>'
       
   289                 '<a href="http://testing.fr/cubicweb/directory/%s">child1</a>'
       
   290                 '</li><li class="last">And more composite entities</li>'
       
   291                 '</ul></li>') % (
       
   292                     d3.eid,
       
   293                     req.find('Directory', name='child2').one().eid,
       
   294                     req.find('Directory', name='child1').one().eid)
       
   295             self.assertIn(expected, source)
       
   296 
   242     def test_automatic_edition_formview(self):
   297     def test_automatic_edition_formview(self):
   243         with self.admin_access.web_request() as req:
   298         with self.admin_access.web_request() as req:
   244             rset = req.execute('CWUser X')
   299             rset = req.execute('CWUser X')
   245             self.view('edition', rset, row=0, template=None, req=req).source
   300             self.view('edition', rset, row=0, template=None, req=req).source
   246 
   301