from sqlobject import * from sqlobject.tests.dbtest import * class Fighter(SQLObject): class sqlmeta: idName='fighter_id' # test on a non-standard way name = StringCol() tourtments = RelatedJoin('Tourtment') class Tourtment(SQLObject): class sqlmeta: table='competition' # test on a non-standard way name = StringCol() fightersAsList = RelatedJoin('Fighter') fightersAsSResult = SQLRelatedJoin('Fighter') def createAllTables(): setupClass(Fighter) setupClass(Tourtment) def test_1(): createAllTables() # create some tourtments t1=Tourtment(name='Tourtment #1') t2=Tourtment(name='Tourtment #2') t3=Tourtment(name='Tourtment #3') # create some fighters gokou=Fighter(name='gokou') vegeta=Fighter(name='vegeta') gohan=Fighter(name='gohan') trunks=Fighter(name='trunks') # relating them t1.addFighter(gokou) t1.addFighter(vegeta) t1.addFighter(gohan) t2.addFighter(gokou) t2.addFighter(vegeta) t2.addFighter(trunks) t3.addFighter(gohan) t3.addFighter(trunks) # do some selects for i, j in zip(t1.fightersAsList, t1.fightersAsSResult): assert i is j assert len(t2.fightersAsList) == t2.fightersAsSResult.count() def test_related_join_transaction(): if not supports('transactions'): return createAllTables() trans = Tourtment._connection.transaction() try: t1=Tourtment(name='Tourtment #1', connection=trans) t1.addFighter(Fighter(name='Jim', connection=trans)) assert t1.fightersAsSResult.count() == 1 assert t1.fightersAsSResult[0]._connection == trans finally: Tourtment._connection.autoCommit = True