218 # should return an empty result set |
218 # should return an empty result set |
219 self.failIf(self.execute('Any X WHERE X eid 99999999')) |
219 self.failIf(self.execute('Any X WHERE X eid 99999999')) |
220 |
220 |
221 def test_typed_eid(self): |
221 def test_typed_eid(self): |
222 # should return an empty result set |
222 # should return an empty result set |
223 rset = self.execute('Any X WHERE X eid %(x)s', {'x': '1'}, 'x') |
223 rset = self.execute('Any X WHERE X eid %(x)s', {'x': '1'}) |
224 self.assertIsInstance(rset[0][0], (int, long)) |
224 self.assertIsInstance(rset[0][0], (int, long)) |
225 |
225 |
226 def test_bytes_storage(self): |
226 def test_bytes_storage(self): |
227 feid = self.execute('INSERT File X: X data_name "foo.pdf", X data_format "text/plain", X data %(data)s', |
227 feid = self.execute('INSERT File X: X data_name "foo.pdf", X data_format "text/plain", X data %(data)s', |
228 {'data': Binary("xxx")})[0][0] |
228 {'data': Binary("xxx")})[0][0] |
229 fdata = self.execute('Any D WHERE X data D, X eid %(x)s', {'x': feid}, 'x')[0][0] |
229 fdata = self.execute('Any D WHERE X data D, X eid %(x)s', {'x': feid})[0][0] |
230 self.assertIsInstance(fdata, Binary) |
230 self.assertIsInstance(fdata, Binary) |
231 self.assertEquals(fdata.getvalue(), 'xxx') |
231 self.assertEquals(fdata.getvalue(), 'xxx') |
232 |
232 |
233 # selection queries tests ################################################# |
233 # selection queries tests ################################################# |
234 |
234 |
354 rset = self.execute('Any S,X ORDERBY S WHERE X? travaille S') |
354 rset = self.execute('Any S,X ORDERBY S WHERE X? travaille S') |
355 self.assertEquals(rset.rows, [[seid1, peid1], [seid2, None]]) |
355 self.assertEquals(rset.rows, [[seid1, peid1], [seid2, None]]) |
356 |
356 |
357 def test_select_outer_join_optimized(self): |
357 def test_select_outer_join_optimized(self): |
358 peid1 = self.execute("INSERT Personne X: X nom 'bidule'")[0][0] |
358 peid1 = self.execute("INSERT Personne X: X nom 'bidule'")[0][0] |
359 rset = self.execute('Any X WHERE X eid %(x)s, P? connait X', {'x':peid1}, 'x') |
359 rset = self.execute('Any X WHERE X eid %(x)s, P? connait X', {'x':peid1}) |
360 self.assertEquals(rset.rows, [[peid1]]) |
360 self.assertEquals(rset.rows, [[peid1]]) |
361 rset = self.execute('Any X WHERE X eid %(x)s, X require_permission P?', |
361 rset = self.execute('Any X WHERE X eid %(x)s, X require_permission P?', |
362 {'x':peid1}, 'x') |
362 {'x':peid1}) |
363 self.assertEquals(rset.rows, [[peid1]]) |
363 self.assertEquals(rset.rows, [[peid1]]) |
364 |
364 |
365 def test_select_left_outer_join(self): |
365 def test_select_left_outer_join(self): |
366 rset = self.execute('DISTINCT Any G WHERE U? in_group G') |
366 rset = self.execute('DISTINCT Any G WHERE U? in_group G') |
367 self.assertEquals(len(rset), 4) |
367 self.assertEquals(len(rset), 4) |
368 rset = self.execute('DISTINCT Any G WHERE U? in_group G, U eid %(x)s', |
368 rset = self.execute('DISTINCT Any G WHERE U? in_group G, U eid %(x)s', |
369 {'x': self.session.user.eid}, 'x') |
369 {'x': self.session.user.eid}) |
370 self.assertEquals(len(rset), 4) |
370 self.assertEquals(len(rset), 4) |
371 |
371 |
372 def test_select_ambigous_outer_join(self): |
372 def test_select_ambigous_outer_join(self): |
373 teid = self.execute("INSERT Tag X: X name 'tag'")[0][0] |
373 teid = self.execute("INSERT Tag X: X name 'tag'")[0][0] |
374 self.execute("INSERT Tag X: X name 'tagbis'")[0][0] |
374 self.execute("INSERT Tag X: X name 'tagbis'")[0][0] |
375 geid = self.execute("CWGroup G WHERE G name 'users'")[0][0] |
375 geid = self.execute("CWGroup G WHERE G name 'users'")[0][0] |
376 self.execute("SET X tags Y WHERE X eid %(t)s, Y eid %(g)s", |
376 self.execute("SET X tags Y WHERE X eid %(t)s, Y eid %(g)s", |
377 {'g': geid, 't': teid}, 'g') |
377 {'g': geid, 't': teid}) |
378 rset = self.execute("Any GN,TN ORDERBY GN WHERE T? tags G, T name TN, G name GN") |
378 rset = self.execute("Any GN,TN ORDERBY GN WHERE T? tags G, T name TN, G name GN") |
379 self.failUnless(['users', 'tag'] in rset.rows) |
379 self.failUnless(['users', 'tag'] in rset.rows) |
380 self.failUnless(['activated', None] in rset.rows) |
380 self.failUnless(['activated', None] in rset.rows) |
381 rset = self.execute("Any GN,TN ORDERBY GN WHERE T tags G?, T name TN, G name GN") |
381 rset = self.execute("Any GN,TN ORDERBY GN WHERE T tags G?, T name TN, G name GN") |
382 self.assertEquals(rset.rows, [[None, 'tagbis'], ['users', 'tag']]) |
382 self.assertEquals(rset.rows, [[None, 'tagbis'], ['users', 'tag']]) |
880 self.assertEquals(rset.description, [('Personne', 'Societe',)]) |
880 self.assertEquals(rset.description, [('Personne', 'Societe',)]) |
881 |
881 |
882 def test_insert_5bis(self): |
882 def test_insert_5bis(self): |
883 peid = self.execute("INSERT Personne X: X nom 'bidule'")[0][0] |
883 peid = self.execute("INSERT Personne X: X nom 'bidule'")[0][0] |
884 self.execute("INSERT Societe Y: Y nom 'toto', X travaille Y WHERE X eid %(x)s", |
884 self.execute("INSERT Societe Y: Y nom 'toto', X travaille Y WHERE X eid %(x)s", |
885 {'x': peid}, 'x') |
885 {'x': peid}) |
886 rset = self.execute('Any X, Y WHERE X nom "bidule", Y nom "toto", X travaille Y') |
886 rset = self.execute('Any X, Y WHERE X nom "bidule", Y nom "toto", X travaille Y') |
887 self.assert_(rset.rows) |
887 self.assert_(rset.rows) |
888 self.assertEquals(rset.description, [('Personne', 'Societe',)]) |
888 self.assertEquals(rset.description, [('Personne', 'Societe',)]) |
889 |
889 |
890 def test_insert_6(self): |
890 def test_insert_6(self): |
998 |
998 |
999 def test_nonregr_delete_cache2(self): |
999 def test_nonregr_delete_cache2(self): |
1000 eid = self.execute("INSERT Folder T: T name 'toto'")[0][0] |
1000 eid = self.execute("INSERT Folder T: T name 'toto'")[0][0] |
1001 self.commit() |
1001 self.commit() |
1002 # fill the cache |
1002 # fill the cache |
1003 self.execute("Any X WHERE X eid %(x)s", {'x': eid}, 'x') |
1003 self.execute("Any X WHERE X eid %(x)s", {'x': eid}) |
1004 self.execute("Any X WHERE X eid %s" %eid) |
1004 self.execute("Any X WHERE X eid %s" %eid) |
1005 self.execute("Folder X WHERE X eid %(x)s", {'x': eid}, 'x') |
1005 self.execute("Folder X WHERE X eid %(x)s", {'x': eid}) |
1006 self.execute("Folder X WHERE X eid %s" %eid) |
1006 self.execute("Folder X WHERE X eid %s" %eid) |
1007 self.execute("DELETE Folder T WHERE T eid %s"%eid) |
1007 self.execute("DELETE Folder T WHERE T eid %s"%eid) |
1008 self.commit() |
1008 self.commit() |
1009 rset = self.execute("Any X WHERE X eid %(x)s", {'x': eid}, 'x') |
1009 rset = self.execute("Any X WHERE X eid %(x)s", {'x': eid}) |
1010 self.assertEquals(rset.rows, []) |
1010 self.assertEquals(rset.rows, []) |
1011 rset = self.execute("Any X WHERE X eid %s" %eid) |
1011 rset = self.execute("Any X WHERE X eid %s" %eid) |
1012 self.assertEquals(rset.rows, []) |
1012 self.assertEquals(rset.rows, []) |
1013 rset = self.execute("Folder X WHERE X eid %(x)s", {'x': eid}, 'x') |
1013 rset = self.execute("Folder X WHERE X eid %(x)s", {'x': eid}) |
1014 self.assertEquals(rset.rows, []) |
1014 self.assertEquals(rset.rows, []) |
1015 rset = self.execute("Folder X WHERE X eid %s" %eid) |
1015 rset = self.execute("Folder X WHERE X eid %s" %eid) |
1016 self.assertEquals(rset.rows, []) |
1016 self.assertEquals(rset.rows, []) |
1017 |
1017 |
1018 # update queries tests #################################################### |
1018 # update queries tests #################################################### |
1084 self.assertEquals(orders2, orders) |
1084 self.assertEquals(orders2, orders) |
1085 |
1085 |
1086 def test_update_string_concat(self): |
1086 def test_update_string_concat(self): |
1087 beid = self.execute("INSERT Bookmark Y: Y title 'toto', Y path '/view'")[0][0] |
1087 beid = self.execute("INSERT Bookmark Y: Y title 'toto', Y path '/view'")[0][0] |
1088 self.execute('SET X title XN + %(suffix)s WHERE X is Bookmark, X title XN', {'suffix': u'-moved'}) |
1088 self.execute('SET X title XN + %(suffix)s WHERE X is Bookmark, X title XN', {'suffix': u'-moved'}) |
1089 newname = self.execute('Any XN WHERE X eid %(x)s, X title XN', {'x': beid}, 'x')[0][0] |
1089 newname = self.execute('Any XN WHERE X eid %(x)s, X title XN', {'x': beid})[0][0] |
1090 self.assertEquals(newname, 'toto-moved') |
1090 self.assertEquals(newname, 'toto-moved') |
1091 |
1091 |
1092 def test_update_query_error(self): |
1092 def test_update_query_error(self): |
1093 self.execute("INSERT Personne Y: Y nom 'toto'") |
1093 self.execute("INSERT Personne Y: Y nom 'toto'") |
1094 self.assertRaises(Exception, self.execute, "SET X nom 'toto', X is Personne") |
1094 self.assertRaises(Exception, self.execute, "SET X nom 'toto', X is Personne") |
1201 {'name': u'éname0', |
1201 {'name': u'éname0', |
1202 'modification_date': '2003/03/12 11:00', |
1202 'modification_date': '2003/03/12 11:00', |
1203 'creation_date': '2000/07/03 11:00'}) |
1203 'creation_date': '2000/07/03 11:00'}) |
1204 rset = self.execute('Any lower(N) ORDERBY LOWER(N) WHERE X is Tag, X name N,' |
1204 rset = self.execute('Any lower(N) ORDERBY LOWER(N) WHERE X is Tag, X name N,' |
1205 'X owned_by U, U eid %(x)s', |
1205 'X owned_by U, U eid %(x)s', |
1206 {'x':self.session.user.eid}, 'x') |
1206 {'x':self.session.user.eid}) |
1207 self.assertEquals(rset.rows, [[u'\xe9name0']]) |
1207 self.assertEquals(rset.rows, [[u'\xe9name0']]) |
1208 |
1208 |
1209 |
1209 |
1210 def test_nonregr_description(self): |
1210 def test_nonregr_description(self): |
1211 """check that a correct description is built in case where infered |
1211 """check that a correct description is built in case where infered |
1284 |
1284 |
1285 def test_nonregr_set_query(self): |
1285 def test_nonregr_set_query(self): |
1286 ueid = self.execute("INSERT CWUser X: X login 'bob', X upassword 'toto'")[0][0] |
1286 ueid = self.execute("INSERT CWUser X: X login 'bob', X upassword 'toto'")[0][0] |
1287 self.execute("SET E in_group G, E firstname %(firstname)s, E surname %(surname)s " |
1287 self.execute("SET E in_group G, E firstname %(firstname)s, E surname %(surname)s " |
1288 "WHERE E eid %(x)s, G name 'users'", |
1288 "WHERE E eid %(x)s, G name 'users'", |
1289 {'x':ueid, 'firstname': u'jean', 'surname': u'paul'}, 'x') |
1289 {'x':ueid, 'firstname': u'jean', 'surname': u'paul'}) |
1290 |
1290 |
1291 def test_nonregr_u_owned_by_u(self): |
1291 def test_nonregr_u_owned_by_u(self): |
1292 ueid = self.execute("INSERT CWUser X: X login 'bob', X upassword 'toto', X in_group G " |
1292 ueid = self.execute("INSERT CWUser X: X login 'bob', X upassword 'toto', X in_group G " |
1293 "WHERE G name 'users'")[0][0] |
1293 "WHERE G name 'users'")[0][0] |
1294 rset = self.execute("CWUser U") |
1294 rset = self.execute("CWUser U") |