web/test/unittest_application.py
changeset 11064 113e9da47afc
parent 11063 de20b0903d7d
child 11065 c7dbd10648e6
equal deleted inserted replaced
11063:de20b0903d7d 11064:113e9da47afc
   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',
   260     def _edit_parent(self, dir_eid, parent_eid, role='subject',
   261                      etype='Directory'):
   261                      etype='Directory', **kwargs):
   262         parent_eid = parent_eid or '__cubicweb_internal_field__'
   262         parent_eid = parent_eid or '__cubicweb_internal_field__'
   263         with self.admin_access.web_request() as req:
   263         with self.admin_access.web_request() as req:
   264             req.form = {
   264             req.form = {
   265                 'eid': unicode(dir_eid),
   265                 'eid': unicode(dir_eid),
   266                 '__maineid': unicode(dir_eid),
   266                 '__maineid': unicode(dir_eid),
   267                 '__type:%s' % dir_eid: etype,
   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,
   268                 'parent-%s:%s' % (role, dir_eid): parent_eid,
   270             }
   269             }
       
   270             req.form.update(kwargs)
       
   271             req.form['_cw_entity_fields:%s' % dir_eid] = ','.join(
       
   272                 ['parent-%s' % role] +
       
   273                 [key.split(':')[0]
       
   274                  for key in kwargs.keys()
       
   275                  if not key.startswith('_')])
   271             self.expect_redirect_handle_request(req)
   276             self.expect_redirect_handle_request(req)
       
   277 
       
   278     def test_create_and_link_directories(self):
       
   279         with self.admin_access.web_request() as req:
       
   280             req.form = {
       
   281                 'eid': (u'A', u'B'),
       
   282                 '__maineid': u'A',
       
   283                 '__type:A': 'Directory',
       
   284                 '__type:B': 'Directory',
       
   285                 'parent-subject:B': u'A',
       
   286                 'name-subject:A': u'topd',
       
   287                 'name-subject:B': u'subd',
       
   288                 '_cw_entity_fields:A': 'name-subject',
       
   289                 '_cw_entity_fields:B': 'parent-subject,name-subject',
       
   290             }
       
   291             self.expect_redirect_handle_request(req)
       
   292 
       
   293         with self.admin_access.repo_cnx() as cnx:
       
   294             self.assertTrue(cnx.find('Directory', name=u'topd'))
       
   295             self.assertTrue(cnx.find('Directory', name=u'subd'))
       
   296             self.assertEqual(1, cnx.execute(
       
   297                 'Directory SUBD WHERE SUBD parent TOPD,'
       
   298                 ' SUBD name "subd", TOPD name "topd"').rowcount)
       
   299 
       
   300     def test_create_subentity(self):
       
   301         with self.admin_access.repo_cnx() as cnx:
       
   302             topd = cnx.create_entity('Directory', name=u'topd')
       
   303             cnx.commit()
       
   304 
       
   305         with self.admin_access.web_request() as req:
       
   306             req.form = {
       
   307                 'eid': (unicode(topd.eid), u'B'),
       
   308                 '__maineid': unicode(topd.eid),
       
   309                 '__type:%s' % topd.eid: 'Directory',
       
   310                 '__type:B': 'Directory',
       
   311                 'parent-object:%s' % topd.eid: u'B',
       
   312                 'name-subject:B': u'subd',
       
   313                 '_cw_entity_fields:%s' % topd.eid: 'parent-object',
       
   314                 '_cw_entity_fields:B': 'name-subject',
       
   315             }
       
   316             self.expect_redirect_handle_request(req)
       
   317 
       
   318         with self.admin_access.repo_cnx() as cnx:
       
   319             self.assertTrue(cnx.find('Directory', name=u'topd'))
       
   320             self.assertTrue(cnx.find('Directory', name=u'subd'))
       
   321             self.assertEqual(1, cnx.execute(
       
   322                 'Directory SUBD WHERE SUBD parent TOPD,'
       
   323                 ' SUBD name "subd", TOPD name "topd"').rowcount)
   272 
   324 
   273     def test_subject_subentity_removal(self):
   325     def test_subject_subentity_removal(self):
   274         """Editcontroller: detaching a composite relation removes the subentity
   326         """Editcontroller: detaching a composite relation removes the subentity
   275         (edit from the subject side)
   327         (edit from the subject side)
   276         """
   328         """
   278             topd = cnx.create_entity('Directory', name=u'topd')
   330             topd = cnx.create_entity('Directory', name=u'topd')
   279             sub1 = cnx.create_entity('Directory', name=u'sub1', parent=topd)
   331             sub1 = cnx.create_entity('Directory', name=u'sub1', parent=topd)
   280             sub2 = cnx.create_entity('Directory', name=u'sub2', parent=topd)
   332             sub2 = cnx.create_entity('Directory', name=u'sub2', parent=topd)
   281             cnx.commit()
   333             cnx.commit()
   282 
   334 
   283         self._edit_parent(sub1.eid, parent_eid=None)
   335         attrs = {'name-subject:%s' % sub1.eid: ''}
       
   336         self._edit_parent(sub1.eid, parent_eid=None, **attrs)
   284 
   337 
   285         with self.admin_access.repo_cnx() as cnx:
   338         with self.admin_access.repo_cnx() as cnx:
   286             self.assertTrue(cnx.find('Directory', eid=topd.eid))
   339             self.assertTrue(cnx.find('Directory', eid=topd.eid))
   287             self.assertFalse(cnx.find('Directory', eid=sub1.eid))
   340             self.assertFalse(cnx.find('Directory', eid=sub1.eid))
   288             self.assertTrue(cnx.find('Directory', eid=sub2.eid))
   341             self.assertTrue(cnx.find('Directory', eid=sub2.eid))