server/test/unittest_repository.py
branchstable
changeset 3315 59220b704562
parent 2923 b97a0f8dd4dc
child 2968 0e3460341023
child 3771 234b003f0fe0
equal deleted inserted replaced
3298:caef98aa4a98 3315:59220b704562
   100         repo.close(cnxid)
   100         repo.close(cnxid)
   101 
   101 
   102     def test_login_upassword_accent(self):
   102     def test_login_upassword_accent(self):
   103         repo = self.repo
   103         repo = self.repo
   104         cnxid = repo.connect(*self.default_user_password())
   104         cnxid = repo.connect(*self.default_user_password())
   105         repo.execute(cnxid, 'INSERT CWUser X: X login %(login)s, X upassword %(passwd)s, X in_state S, X in_group G WHERE S name "activated", G name "users"',
   105         repo.execute(cnxid, 'INSERT CWUser X: X login %(login)s, X upassword %(passwd)s, X in_group G WHERE G name "users"',
   106                      {'login': u"barnabé", 'passwd': u"héhéhé".encode('UTF8')})
   106                      {'login': u"barnabé", 'passwd': u"héhéhé".encode('UTF8')})
   107         repo.commit(cnxid)
   107         repo.commit(cnxid)
   108         repo.close(cnxid)
   108         repo.close(cnxid)
   109         self.assert_(repo.connect(u"barnabé", u"héhéhé".encode('UTF8')))
   109         self.assert_(repo.connect(u"barnabé", u"héhéhé".encode('UTF8')))
   110 
   110 
   111     def test_invalid_entity_rollback(self):
   111     def test_invalid_entity_rollback(self):
   112         repo = self.repo
   112         repo = self.repo
   113         cnxid = repo.connect(*self.default_user_password())
   113         cnxid = repo.connect(*self.default_user_password())
   114         # no group
   114         # no group
   115         repo.execute(cnxid, 'INSERT CWUser X: X login %(login)s, X upassword %(passwd)s, X in_state S WHERE S name "activated"',
   115         repo.execute(cnxid, 'INSERT CWUser X: X login %(login)s, X upassword %(passwd)s',
   116                      {'login': u"tutetute", 'passwd': 'tutetute'})
   116                      {'login': u"tutetute", 'passwd': 'tutetute'})
   117         self.assertRaises(ValidationError, repo.commit, cnxid)
   117         self.assertRaises(ValidationError, repo.commit, cnxid)
   118         rset = repo.execute(cnxid, 'CWUser X WHERE X login "tutetute"')
   118         rset = repo.execute(cnxid, 'CWUser X WHERE X login "tutetute"')
   119         self.assertEquals(rset.rowcount, 0)
   119         self.assertEquals(rset.rowcount, 0)
   120 
   120 
   188 
   188 
   189     def test_transaction_base3(self):
   189     def test_transaction_base3(self):
   190         repo = self.repo
   190         repo = self.repo
   191         cnxid = repo.connect(*self.default_user_password())
   191         cnxid = repo.connect(*self.default_user_password())
   192         # rollback state change which trigger TrInfo insertion
   192         # rollback state change which trigger TrInfo insertion
   193         ueid = repo._get_session(cnxid).user.eid
   193         user = repo._get_session(cnxid).user
   194         rset = repo.execute(cnxid, 'TrInfo T WHERE T wf_info_for X, X eid %(x)s', {'x': ueid})
   194         user.fire_transition('deactivate')
       
   195         rset = repo.execute(cnxid, 'TrInfo T WHERE T wf_info_for X, X eid %(x)s', {'x': user.eid})
   195         self.assertEquals(len(rset), 1)
   196         self.assertEquals(len(rset), 1)
   196         repo.execute(cnxid, 'SET X in_state S WHERE X eid %(x)s, S name "deactivated"',
       
   197                      {'x': ueid}, 'x')
       
   198         rset = repo.execute(cnxid, 'TrInfo T WHERE T wf_info_for X, X eid %(x)s', {'x': ueid})
       
   199         self.assertEquals(len(rset), 2)
       
   200         repo.rollback(cnxid)
   197         repo.rollback(cnxid)
   201         rset = repo.execute(cnxid, 'TrInfo T WHERE T wf_info_for X, X eid %(x)s', {'x': ueid})
   198         rset = repo.execute(cnxid, 'TrInfo T WHERE T wf_info_for X, X eid %(x)s', {'x': user.eid})
   202         self.assertEquals(len(rset), 1)
   199         self.assertEquals(len(rset), 0)
   203 
   200 
   204     def test_transaction_interleaved(self):
   201     def test_transaction_interleaved(self):
   205         self.skip('implement me')
   202         self.skip('implement me')
   206 
   203 
   207     def test_close_wait_processing_request(self):
   204     def test_close_wait_processing_request(self):
   340 #             self.create_user('toto')
   337 #             self.create_user('toto')
   341 #         finally:
   338 #         finally:
   342 #             self.set_debug(False)
   339 #             self.set_debug(False)
   343 #         print 'test time: %.3f (time) %.3f (cpu)' % ((time() - t), clock() - c)
   340 #         print 'test time: %.3f (time) %.3f (cpu)' % ((time() - t), clock() - c)
   344 
   341 
       
   342     def test_delete_if_singlecard1(self):
       
   343         note = self.add_entity('Affaire')
       
   344         p1 = self.add_entity('Personne', nom=u'toto')
       
   345         self.execute('SET A todo_by P WHERE A eid %(x)s, P eid %(p)s',
       
   346                      {'x': note.eid, 'p': p1.eid})
       
   347         rset = self.execute('Any P WHERE A todo_by P, A eid %(x)s',
       
   348                             {'x': note.eid})
       
   349         self.assertEquals(len(rset), 1)
       
   350         p2 = self.add_entity('Personne', nom=u'tutu')
       
   351         self.execute('SET A todo_by P WHERE A eid %(x)s, P eid %(p)s',
       
   352                      {'x': note.eid, 'p': p2.eid})
       
   353         rset = self.execute('Any P WHERE A todo_by P, A eid %(x)s',
       
   354                             {'x': note.eid})
       
   355         self.assertEquals(len(rset), 1)
       
   356         self.assertEquals(rset.rows[0][0], p2.eid)
       
   357 
   345 
   358 
   346 class DataHelpersTC(RepositoryBasedTC):
   359 class DataHelpersTC(RepositoryBasedTC):
   347 
   360 
   348     def setUp(self):
   361     def setUp(self):
   349         """ called before each test from this class """
   362         """ called before each test from this class """
   483         self.execute('SET N ecrit_par Y WHERE N type "T", Y nom "toto"')
   496         self.execute('SET N ecrit_par Y WHERE N type "T", Y nom "toto"')
   484         self.assertEquals(self.called, [(eidn, 'ecrit_par', eidp,)])
   497         self.assertEquals(self.called, [(eidn, 'ecrit_par', eidp,)])
   485 
   498 
   486     def test_after_add_inline(self):
   499     def test_after_add_inline(self):
   487         """make sure after_<event>_relation hooks are deferred"""
   500         """make sure after_<event>_relation hooks are deferred"""
       
   501         p1 = self.add_entity('Personne', nom=u'toto')
   488         self.hm.register_hook(self._after_relation_hook,
   502         self.hm.register_hook(self._after_relation_hook,
   489                              'after_add_relation', 'in_state')
   503                              'after_add_relation', 'ecrit_par')
   490         eidp = self.execute('INSERT CWUser X: X login "toto", X upassword "tutu", X in_state S WHERE S name "activated"')[0][0]
   504         eidn = self.execute('INSERT Note N: N ecrit_par P WHERE P nom "toto"')[0][0]
   491         eids = self.execute('State X WHERE X name "activated"')[0][0]
   505         self.assertEquals(self.called, [(eidn, 'ecrit_par', p1.eid,)])
   492         self.assertEquals(self.called, [(eidp, 'in_state', eids,)])
       
   493 
   506 
   494     def test_before_delete_inline_relation(self):
   507     def test_before_delete_inline_relation(self):
   495         """make sure before_<event>_relation hooks are called directly"""
   508         """make sure before_<event>_relation hooks are called directly"""
   496         self.hm.register_hook(self._before_relation_hook,
   509         self.hm.register_hook(self._before_relation_hook,
   497                              'before_delete_relation', 'ecrit_par')
   510                              'before_delete_relation', 'ecrit_par')