diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-07-09 19:48:02 +0000 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-07-09 19:48:02 +0000 |
| commit | 5c7993080a93dc142057a4ac05501bcb3291731d (patch) | |
| tree | 01658bf66ef61bd8426d97e7759de1e3c85b8c5b /test | |
| parent | 1b0ac7e43b715b9050cb5f45d4a180bfc203c8a9 (diff) | |
| download | sqlalchemy-5c7993080a93dc142057a4ac05501bcb3291731d.tar.gz | |
some refactorings to activemapper, made relationship() class have some polymorphic behavior for initializing its real relation, added support + unittest for self-referential relationship
Diffstat (limited to 'test')
| -rw-r--r-- | test/ext/activemapper.py | 38 |
1 files changed, 35 insertions, 3 deletions
diff --git a/test/ext/activemapper.py b/test/ext/activemapper.py index 1bb93dd63..2a44f8e5b 100644 --- a/test/ext/activemapper.py +++ b/test/ext/activemapper.py @@ -1,6 +1,6 @@ import testbase from sqlalchemy.ext.activemapper import ActiveMapper, column, one_to_many, one_to_one, objectstore -from sqlalchemy import and_, or_, clear_mappers +from sqlalchemy import and_, or_, clear_mappers, backref from sqlalchemy import ForeignKey, String, Integer, DateTime from datetime import datetime @@ -218,6 +218,38 @@ class testcase(testbase.PersistTest): ) self.assertEquals(len(results), 1) - +class testselfreferential(testbase.PersistTest): + def setUpAll(self): + global TreeNode + class TreeNode(activemapper.ActiveMapper): + class mapping: + id = column(Integer, primary_key=True) + name = column(String(30)) + parent_id = column(Integer, foreign_key=ForeignKey('treenode.id')) + children = one_to_many('TreeNode', colname='id', backref='parent') + + activemapper.metadata.connect(testbase.db) + activemapper.create_tables() + def tearDownAll(self): + clear_mappers() + activemapper.drop_tables() + + def testbasic(self): + t = TreeNode(name='node1') + t.children.append(TreeNode(name='node2')) + t.children.append(TreeNode(name='node3')) + objectstore.flush() + objectstore.clear() + + t = TreeNode.get_by(name='node1') + assert (t.name == 'node1') + assert (t.children[0].name == 'node2') + assert (t.children[1].name == 'node3') + assert (t.children[1].parent is t) + + objectstore.clear() + t = TreeNode.get_by(name='node3') + assert (t.parent is TreeNode.get_by(name='node1')) + if __name__ == '__main__': - unittest.main() + testbase.main() |
