summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2006-07-09 19:48:02 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2006-07-09 19:48:02 +0000
commit5c7993080a93dc142057a4ac05501bcb3291731d (patch)
tree01658bf66ef61bd8426d97e7759de1e3c85b8c5b /test
parent1b0ac7e43b715b9050cb5f45d4a180bfc203c8a9 (diff)
downloadsqlalchemy-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.py38
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()