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): |