server/test/unittest_querier.py
changeset 4831 c5aec27c1bf7
parent 4795 f1c8bc628b45
child 4848 41f84eea63c9
equal deleted inserted replaced
4829:3b79a0fc91db 4831:c5aec27c1bf7
    33         return {"managers": "3", "users": "2", "guests":  "1", "owners": "0"}[text]
    33         return {"managers": "3", "users": "2", "guests":  "1", "owners": "0"}[text]
    34     cnx.create_function("GROUP_SORT_VALUE", 1, group_sort_value)
    34     cnx.create_function("GROUP_SORT_VALUE", 1, group_sort_value)
    35 SQL_CONNECT_HOOKS['sqlite'].append(init_sqlite_connexion)
    35 SQL_CONNECT_HOOKS['sqlite'].append(init_sqlite_connexion)
    36 
    36 
    37 
    37 
    38 from logilab.common.adbh import _GenericAdvFuncHelper
    38 from logilab.db import _GenericAdvFuncHelper
    39 TYPEMAP = _GenericAdvFuncHelper.TYPE_MAPPING
    39 TYPEMAP = _GenericAdvFuncHelper.TYPE_MAPPING
    40 
    40 
    41 class MakeSchemaTC(TestCase):
    41 class MakeSchemaTC(TestCase):
    42     def test_known_values(self):
    42     def test_known_values(self):
    43         solution = {'A': 'String', 'B': 'CWUser'}
    43         solution = {'A': 'String', 'B': 'CWUser'}
   395         self.execute("INSERT Note X: X type 'b'")
   395         self.execute("INSERT Note X: X type 'b'")
   396         self.execute("SET Y evaluee X WHERE X type 'a', Y nom 'bidule'")
   396         self.execute("SET Y evaluee X WHERE X type 'a', Y nom 'bidule'")
   397         rset = self.execute('Note X WHERE NOT Y evaluee X')
   397         rset = self.execute('Note X WHERE NOT Y evaluee X')
   398         self.assertEquals(len(rset.rows), 1, rset.rows)
   398         self.assertEquals(len(rset.rows), 1, rset.rows)
   399 
   399 
       
   400     def test_select_date_extraction(self):
       
   401         self.execute("INSERT Personne X: X nom 'foo', X datenaiss %(d)s",
       
   402                      {'d': datetime(2001, 2,3, 12,13)})
       
   403         test_data = [('YEAR', 2001), ('MONTH', 2), ('DAY', 3),
       
   404                      ('HOUR', 12), ('MINUTE', 13)]
       
   405         for funcname, result in test_data:
       
   406             rset = self.execute('Any %s(D) WHERE X is Personne, X datenaiss D'
       
   407                                 % funcname)
       
   408             self.assertEquals(len(rset.rows), 1)
       
   409             self.assertEquals(rset.rows[0][0], result)
       
   410             self.assertEquals(rset.description, [('Int',)])
       
   411 
   400     def test_select_aggregat_count(self):
   412     def test_select_aggregat_count(self):
   401         rset = self.execute('Any COUNT(X)')
   413         rset = self.execute('Any COUNT(X)')
   402         self.assertEquals(len(rset.rows), 1)
   414         self.assertEquals(len(rset.rows), 1)
   403         self.assertEquals(len(rset.rows[0]), 1)
   415         self.assertEquals(len(rset.rows[0]), 1)
   404         self.assertEquals(rset.description, [('Int',)])
   416         self.assertEquals(rset.description, [('Int',)])
   428         self.assertEquals(len(rset.rows), 1)
   440         self.assertEquals(len(rset.rows), 1)
   429         self.assertEquals(len(rset.rows[0]), 1)
   441         self.assertEquals(len(rset.rows[0]), 1)
   430         self.assertEquals(rset.description, [('Int',)])
   442         self.assertEquals(rset.description, [('Int',)])
   431 
   443 
   432     def test_select_custom_aggregat_concat_string(self):
   444     def test_select_custom_aggregat_concat_string(self):
   433         rset = self.execute('Any CONCAT_STRINGS(N) WHERE X is CWGroup, X name N')
   445         rset = self.execute('Any GROUP_CONCAT(N) WHERE X is CWGroup, X name N')
   434         self.failUnless(rset)
   446         self.failUnless(rset)
   435         self.failUnlessEqual(sorted(rset[0][0].split(', ')), ['guests', 'managers',
   447         self.failUnlessEqual(sorted(rset[0][0].split(', ')), ['guests', 'managers',
   436                                                              'owners', 'users'])
   448                                                              'owners', 'users'])
   437 
   449 
   438     def test_select_custom_regproc_limit_size(self):
   450     def test_select_custom_regproc_limit_size(self):