279 'WHERE RT name "concerne2", E name "Societe2"')[0][0] |
285 'WHERE RT name "concerne2", E name "Societe2"')[0][0] |
280 self.execute('INSERT ENFRDef X: X cardinality "?*", X relation_type RT, X from_entity E, X to_entity C ' |
286 self.execute('INSERT ENFRDef X: X cardinality "?*", X relation_type RT, X from_entity E, X to_entity C ' |
281 'WHERE RT name "comments", E name "Societe2", C name "Comment"') |
287 'WHERE RT name "comments", E name "Societe2", C name "Comment"') |
282 self.failIf('nom' in schema['Societe2'].subject_relations()) |
288 self.failIf('nom' in schema['Societe2'].subject_relations()) |
283 self.failIf('concerne2' in schema['Societe2'].subject_relations()) |
289 self.failIf('concerne2' in schema['Societe2'].subject_relations()) |
284 self.failIf(dbhelper.index_exists(sqlcursor, 'Societe2', 'nom')) |
290 self.failIf(self.index_exists('Societe2', 'nom')) |
285 self.commit() |
291 self.commit() |
286 self.failUnless('nom' in schema['Societe2'].subject_relations()) |
292 self.failUnless('nom' in schema['Societe2'].subject_relations()) |
287 self.failUnless('concerne2' in schema['Societe2'].subject_relations()) |
293 self.failUnless('concerne2' in schema['Societe2'].subject_relations()) |
288 self.failUnless(dbhelper.index_exists(sqlcursor, 'Societe2', 'nom')) |
294 self.failUnless(self.index_exists('Societe2', 'nom')) |
289 # now we should be able to insert and query Societe2 |
295 # now we should be able to insert and query Societe2 |
290 s2eid = self.execute('INSERT Societe2 X: X nom "logilab"')[0][0] |
296 s2eid = self.execute('INSERT Societe2 X: X nom "logilab"')[0][0] |
291 self.execute('Societe2 X WHERE X nom "logilab"') |
297 self.execute('Societe2 X WHERE X nom "logilab"') |
292 self.execute('SET X concerne2 X WHERE X nom "logilab"') |
298 self.execute('SET X concerne2 X WHERE X nom "logilab"') |
293 rset = self.execute('Any X WHERE X concerne2 Y') |
299 rset = self.execute('Any X WHERE X concerne2 Y') |
302 self.failIf('concerne2' in schema['Societe2'].subject_relations()) |
308 self.failIf('concerne2' in schema['Societe2'].subject_relations()) |
303 self.failIf(self.execute('Any X WHERE X concerne2 Y')) |
309 self.failIf(self.execute('Any X WHERE X concerne2 Y')) |
304 # schema should be cleaned on delete (after commit) |
310 # schema should be cleaned on delete (after commit) |
305 self.execute('DELETE EEType X WHERE X name "Societe2"') |
311 self.execute('DELETE EEType X WHERE X name "Societe2"') |
306 self.execute('DELETE ERType X WHERE X name "concerne2"') |
312 self.execute('DELETE ERType X WHERE X name "concerne2"') |
307 self.failUnless(dbhelper.index_exists(sqlcursor, 'Societe2', 'nom')) |
313 self.failUnless(self.index_exists('Societe2', 'nom')) |
308 self.failUnless(schema.has_entity('Societe2')) |
314 self.failUnless(schema.has_entity('Societe2')) |
309 self.failUnless(schema.has_relation('concerne2')) |
315 self.failUnless(schema.has_relation('concerne2')) |
310 self.commit() |
316 self.commit() |
311 self.failIf(dbhelper.index_exists(sqlcursor, 'Societe2', 'nom')) |
317 self.failIf(self.index_exists('Societe2', 'nom')) |
312 self.failIf(schema.has_entity('Societe2')) |
318 self.failIf(schema.has_entity('Societe2')) |
313 self.failIf(schema.has_entity('concerne2')) |
319 self.failIf(schema.has_entity('concerne2')) |
314 |
320 |
315 def test_is_instance_of_insertions(self): |
321 def test_is_instance_of_insertions(self): |
316 seid = self.execute('INSERT SubDivision S: S nom "subdiv"')[0][0] |
322 seid = self.execute('INSERT SubDivision S: S nom "subdiv"')[0][0] |
396 finally: |
402 finally: |
397 self.execute('SET X inlined TRUE WHERE X name "inline2"') |
403 self.execute('SET X inlined TRUE WHERE X name "inline2"') |
398 self.failIf(self.schema['inline2'].inlined) |
404 self.failIf(self.schema['inline2'].inlined) |
399 self.commit() |
405 self.commit() |
400 self.failUnless(self.schema['inline2'].inlined) |
406 self.failUnless(self.schema['inline2'].inlined) |
401 self.failUnless(dbhelper.index_exists(sqlcursor, 'Personne', 'inline2')) |
407 self.failUnless(self.index_exists('Personne', 'inline2')) |
402 rset = self.execute('Any X, Y WHERE X inline2 Y') |
408 rset = self.execute('Any X, Y WHERE X inline2 Y') |
403 self.assertEquals(len(rset), 1) |
409 self.assertEquals(len(rset), 1) |
404 self.assertEquals(rset.rows[0], [peid, aeid]) |
410 self.assertEquals(rset.rows[0], [peid, aeid]) |
405 |
411 |
406 def test_indexed_change(self): |
412 def test_indexed_change(self): |
407 dbhelper = self.session.pool.source('system').dbhelper |
413 dbhelper = self.session.pool.source('system').dbhelper |
408 sqlcursor = self.session.pool['system'] |
414 sqlcursor = self.session.pool['system'] |
409 try: |
415 try: |
410 self.execute('SET X indexed TRUE WHERE X relation_type R, R name "sujet"') |
416 self.execute('SET X indexed TRUE WHERE X relation_type R, R name "sujet"') |
411 self.failIf(self.schema['sujet'].rproperty('Affaire', 'String', 'indexed')) |
417 self.failIf(self.schema['sujet'].rproperty('Affaire', 'String', 'indexed')) |
412 self.failIf(dbhelper.index_exists(sqlcursor, 'Affaire', 'sujet')) |
418 self.failIf(self.index_exists('Affaire', 'sujet')) |
413 self.commit() |
419 self.commit() |
414 self.failUnless(self.schema['sujet'].rproperty('Affaire', 'String', 'indexed')) |
420 self.failUnless(self.schema['sujet'].rproperty('Affaire', 'String', 'indexed')) |
415 self.failUnless(dbhelper.index_exists(sqlcursor, 'Affaire', 'sujet')) |
421 self.failUnless(self.index_exists('Affaire', 'sujet')) |
416 finally: |
422 finally: |
417 self.execute('SET X indexed FALSE WHERE X relation_type R, R name "sujet"') |
423 self.execute('SET X indexed FALSE WHERE X relation_type R, R name "sujet"') |
418 self.failUnless(self.schema['sujet'].rproperty('Affaire', 'String', 'indexed')) |
424 self.failUnless(self.schema['sujet'].rproperty('Affaire', 'String', 'indexed')) |
419 self.failUnless(dbhelper.index_exists(sqlcursor, 'Affaire', 'sujet')) |
425 self.failUnless(self.index_exists('Affaire', 'sujet')) |
420 self.commit() |
426 self.commit() |
421 self.failIf(self.schema['sujet'].rproperty('Affaire', 'String', 'indexed')) |
427 self.failIf(self.schema['sujet'].rproperty('Affaire', 'String', 'indexed')) |
422 self.failIf(dbhelper.index_exists(sqlcursor, 'Affaire', 'sujet')) |
428 self.failIf(self.index_exists('Affaire', 'sujet')) |
423 |
429 |
424 def test_unique_change(self): |
430 def test_unique_change(self): |
425 dbhelper = self.session.pool.source('system').dbhelper |
431 dbhelper = self.session.pool.source('system').dbhelper |
426 sqlcursor = self.session.pool['system'] |
432 sqlcursor = self.session.pool['system'] |
427 try: |
433 try: |
428 self.execute('INSERT EConstraint X: X cstrtype CT, DEF constrained_by X ' |
434 try: |
429 'WHERE CT name "UniqueConstraint", DEF relation_type RT, DEF from_entity E,' |
435 self.execute('INSERT EConstraint X: X cstrtype CT, DEF constrained_by X ' |
430 'RT name "sujet", E name "Affaire"') |
436 'WHERE CT name "UniqueConstraint", DEF relation_type RT, DEF from_entity E,' |
431 self.failIf(self.schema['Affaire'].has_unique_values('sujet')) |
437 'RT name "sujet", E name "Affaire"') |
432 self.failIf(dbhelper.index_exists(sqlcursor, 'Affaire', 'sujet', unique=True)) |
438 self.failIf(self.schema['Affaire'].has_unique_values('sujet')) |
433 self.commit() |
439 self.failIf(self.index_exists('Affaire', 'sujet', unique=True)) |
434 self.failUnless(self.schema['Affaire'].has_unique_values('sujet')) |
440 self.commit() |
435 self.failUnless(dbhelper.index_exists(sqlcursor, 'Affaire', 'sujet', unique=True)) |
441 self.failUnless(self.schema['Affaire'].has_unique_values('sujet')) |
|
442 self.failUnless(self.index_exists('Affaire', 'sujet', unique=True)) |
|
443 except: |
|
444 import traceback |
|
445 traceback.print_exc() |
|
446 raise |
436 finally: |
447 finally: |
437 self.execute('DELETE DEF constrained_by X WHERE X cstrtype CT, ' |
448 self.execute('DELETE DEF constrained_by X WHERE X cstrtype CT, ' |
438 'CT name "UniqueConstraint", DEF relation_type RT, DEF from_entity E,' |
449 'CT name "UniqueConstraint", DEF relation_type RT, DEF from_entity E,' |
439 'RT name "sujet", E name "Affaire"') |
450 'RT name "sujet", E name "Affaire"') |
440 self.failUnless(self.schema['Affaire'].has_unique_values('sujet')) |
451 self.failUnless(self.schema['Affaire'].has_unique_values('sujet')) |
441 self.failUnless(dbhelper.index_exists(sqlcursor, 'Affaire', 'sujet', unique=True)) |
452 self.failUnless(self.index_exists('Affaire', 'sujet', unique=True)) |
442 self.commit() |
453 self.commit() |
443 self.failIf(self.schema['Affaire'].has_unique_values('sujet')) |
454 self.failIf(self.schema['Affaire'].has_unique_values('sujet')) |
444 self.failIf(dbhelper.index_exists(sqlcursor, 'Affaire', 'sujet', unique=True)) |
455 self.failIf(self.index_exists('Affaire', 'sujet', unique=True)) |
445 |
456 |
446 |
457 |
447 class WorkflowHooksTC(RepositoryBasedTC): |
458 class WorkflowHooksTC(RepositoryBasedTC): |
448 |
459 |
449 def setUp(self): |
460 def setUp(self): |