from sqlobject import * from dbtest import * class TestComposerKey(SQLObject): name = StringCol() class TestWorkKey(SQLObject): class sqlmeta: id_name = "work_id" composer = ForeignKey('TestComposerKey', cascade=True) title = StringCol() class TestWorkKey2(SQLObject): title = StringCol() def test1(): setup_class(TestComposerKey, TestWorkKey) c = TestComposerKey(name='Mahler, Gustav') w1 = TestWorkKey(composer=c, title='Symphony No. 9') w2 = TestWorkKey(composer=None, title=None) # Select by usual way s = TestWorkKey.select_by(composer_id=c.id, title='Symphony No. 9') assert s[0].id==w1.id # selectBy object s = TestWorkKey.select_by(composer=c, title='Symphony No. 9') assert s[0].id==w1.id # selectBy id s = TestWorkKey.select_by(id=w1.id) assert s[0].id==w1.id # is None handled correctly? s = TestWorkKey.select_by(composer=None, title=None) assert s[0].id==w2.id # @@: Still need to implement schema updating... #def test2(): # setup_class(TestComposerKey, TestWorkKey2) # TestWorkKey2.sqlmeta.add_column(ForeignKey('TestComposerKey'), change_schema=True)