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 |