web/test/unittest_application.py
changeset 11063 de20b0903d7d
parent 11062 40208f18c7c2
child 11064 113e9da47afc
equal deleted inserted replaced
11062:40208f18c7c2 11063:de20b0903d7d
   255             self.assertEqual(forminfo['error'].entity, forminfo['eidmap']['X'])
   255             self.assertEqual(forminfo['error'].entity, forminfo['eidmap']['X'])
   256             self.assertEqual(forminfo['error'].errors,
   256             self.assertEqual(forminfo['error'].errors,
   257                               {'login-subject': u'the value "admin" is already used, use another one'})
   257                               {'login-subject': u'the value "admin" is already used, use another one'})
   258             self.assertEqual(forminfo['values'], req.form)
   258             self.assertEqual(forminfo['values'], req.form)
   259 
   259 
       
   260     def _edit_parent(self, dir_eid, parent_eid, role='subject',
       
   261                      etype='Directory'):
       
   262         parent_eid = parent_eid or '__cubicweb_internal_field__'
       
   263         with self.admin_access.web_request() as req:
       
   264             req.form = {
       
   265                 'eid': unicode(dir_eid),
       
   266                 '__maineid': unicode(dir_eid),
       
   267                 '__type:%s' % dir_eid: etype,
       
   268                 '_cw_entity_fields:%s' % dir_eid: 'parent-%s' % role,
       
   269                 'parent-%s:%s' % (role, dir_eid): parent_eid,
       
   270             }
       
   271             self.expect_redirect_handle_request(req)
       
   272 
       
   273     def test_subject_subentity_removal(self):
       
   274         """Editcontroller: detaching a composite relation removes the subentity
       
   275         (edit from the subject side)
       
   276         """
       
   277         with self.admin_access.repo_cnx() as cnx:
       
   278             topd = cnx.create_entity('Directory', name=u'topd')
       
   279             sub1 = cnx.create_entity('Directory', name=u'sub1', parent=topd)
       
   280             sub2 = cnx.create_entity('Directory', name=u'sub2', parent=topd)
       
   281             cnx.commit()
       
   282 
       
   283         self._edit_parent(sub1.eid, parent_eid=None)
       
   284 
       
   285         with self.admin_access.repo_cnx() as cnx:
       
   286             self.assertTrue(cnx.find('Directory', eid=topd.eid))
       
   287             self.assertFalse(cnx.find('Directory', eid=sub1.eid))
       
   288             self.assertTrue(cnx.find('Directory', eid=sub2.eid))
       
   289 
       
   290     def test_object_subentity_removal(self):
       
   291         """Editcontroller: detaching a composite relation removes the subentity
       
   292         (edit from the object side)
       
   293         """
       
   294         with self.admin_access.repo_cnx() as cnx:
       
   295             topd = cnx.create_entity('Directory', name=u'topd')
       
   296             sub1 = cnx.create_entity('Directory', name=u'sub1', parent=topd)
       
   297             sub2 = cnx.create_entity('Directory', name=u'sub2', parent=topd)
       
   298             cnx.commit()
       
   299 
       
   300         self._edit_parent(topd.eid, parent_eid=sub1.eid, role='object')
       
   301 
       
   302         with self.admin_access.repo_cnx() as cnx:
       
   303             self.assertTrue(cnx.find('Directory', eid=topd.eid))
       
   304             self.assertTrue(cnx.find('Directory', eid=sub1.eid))
       
   305             self.assertFalse(cnx.find('Directory', eid=sub2.eid))
       
   306 
       
   307     def test_reparent_subentity(self):
       
   308         "Editcontroller: re-parenting a subentity does not remove it"
       
   309         with self.admin_access.repo_cnx() as cnx:
       
   310             top1 = cnx.create_entity('Directory', name=u'top1')
       
   311             top2 = cnx.create_entity('Directory', name=u'top2')
       
   312             subd = cnx.create_entity('Directory', name=u'subd', parent=top1)
       
   313             cnx.commit()
       
   314 
       
   315         self._edit_parent(subd.eid, parent_eid=top2.eid)
       
   316 
       
   317         with self.admin_access.repo_cnx() as cnx:
       
   318             self.assertTrue(cnx.find('Directory', eid=top1.eid))
       
   319             self.assertTrue(cnx.find('Directory', eid=top2.eid))
       
   320             self.assertTrue(cnx.find('Directory', eid=subd.eid))
       
   321             self.assertEqual(
       
   322                 cnx.find('Directory', eid=subd.eid).one().parent[0], top2)
       
   323 
       
   324     def test_subject_mixed_composite_subentity_removal_1(self):
       
   325         """Editcontroller: detaching several subentities respects each rdef's
       
   326         compositeness - Remove non composite
       
   327         """
       
   328         with self.admin_access.repo_cnx() as cnx:
       
   329             topd = cnx.create_entity('Directory', name=u'topd')
       
   330             fs = cnx.create_entity('Filesystem', name=u'/tmp')
       
   331             subd = cnx.create_entity('Directory', name=u'subd',
       
   332                                      parent=(topd, fs))
       
   333             cnx.commit()
       
   334 
       
   335         self._edit_parent(subd.eid, parent_eid=topd.eid)
       
   336 
       
   337         with self.admin_access.repo_cnx() as cnx:
       
   338             self.assertTrue(cnx.find('Directory', eid=topd.eid))
       
   339             self.assertTrue(cnx.find('Directory', eid=subd.eid))
       
   340             self.assertTrue(cnx.find('Filesystem', eid=fs.eid))
       
   341             self.assertEqual(cnx.find('Directory', eid=subd.eid).one().parent,
       
   342                              [topd,])
       
   343 
       
   344     def test_subject_mixed_composite_subentity_removal_2(self):
       
   345         """Editcontroller: detaching several subentities respects each rdef's
       
   346         compositeness - Remove composite
       
   347         """
       
   348         with self.admin_access.repo_cnx() as cnx:
       
   349             topd = cnx.create_entity('Directory', name=u'topd')
       
   350             fs = cnx.create_entity('Filesystem', name=u'/tmp')
       
   351             subd = cnx.create_entity('Directory', name=u'subd',
       
   352                                      parent=(topd, fs))
       
   353             cnx.commit()
       
   354 
       
   355         self._edit_parent(subd.eid, parent_eid=fs.eid)
       
   356 
       
   357         with self.admin_access.repo_cnx() as cnx:
       
   358             self.assertTrue(cnx.find('Directory', eid=topd.eid))
       
   359             self.assertFalse(cnx.find('Directory', eid=subd.eid))
       
   360             self.assertTrue(cnx.find('Filesystem', eid=fs.eid))
       
   361 
       
   362     def test_object_mixed_composite_subentity_removal_1(self):
       
   363         """Editcontroller: detaching several subentities respects each rdef's
       
   364         compositeness - Remove non composite
       
   365         """
       
   366         with self.admin_access.repo_cnx() as cnx:
       
   367             topd = cnx.create_entity('Directory', name=u'topd')
       
   368             fs = cnx.create_entity('Filesystem', name=u'/tmp')
       
   369             subd = cnx.create_entity('Directory', name=u'subd',
       
   370                                      parent=(topd, fs))
       
   371             cnx.commit()
       
   372 
       
   373         self._edit_parent(fs.eid, parent_eid=None, role='object',
       
   374                           etype='Filesystem')
       
   375 
       
   376         with self.admin_access.repo_cnx() as cnx:
       
   377             self.assertTrue(cnx.find('Directory', eid=topd.eid))
       
   378             self.assertTrue(cnx.find('Directory', eid=subd.eid))
       
   379             self.assertTrue(cnx.find('Filesystem', eid=fs.eid))
       
   380             self.assertEqual(cnx.find('Directory', eid=subd.eid).one().parent,
       
   381                              [topd,])
       
   382 
       
   383     def test_object_mixed_composite_subentity_removal_2(self):
       
   384         """Editcontroller: detaching several subentities respects each rdef's
       
   385         compositeness - Remove composite
       
   386         """
       
   387         with self.admin_access.repo_cnx() as cnx:
       
   388             topd = cnx.create_entity('Directory', name=u'topd')
       
   389             fs = cnx.create_entity('Filesystem', name=u'/tmp')
       
   390             subd = cnx.create_entity('Directory', name=u'subd',
       
   391                                      parent=(topd, fs))
       
   392             cnx.commit()
       
   393 
       
   394         self._edit_parent(topd.eid, parent_eid=None, role='object')
       
   395 
       
   396         with self.admin_access.repo_cnx() as cnx:
       
   397             self.assertTrue(cnx.find('Directory', eid=topd.eid))
       
   398             self.assertFalse(cnx.find('Directory', eid=subd.eid))
       
   399             self.assertTrue(cnx.find('Filesystem', eid=fs.eid))
       
   400 
   260     def test_ajax_view_raise_arbitrary_error(self):
   401     def test_ajax_view_raise_arbitrary_error(self):
   261         class ErrorAjaxView(view.View):
   402         class ErrorAjaxView(view.View):
   262             __regid__ = 'test.ajax.error'
   403             __regid__ = 'test.ajax.error'
   263             def call(self):
   404             def call(self):
   264                 raise Exception('whatever')
   405                 raise Exception('whatever')