]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
inheritance test
authorMike Bayer <mike_mp@zzzcomputing.com>
Thu, 16 Feb 2006 06:37:41 +0000 (06:37 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Thu, 16 Feb 2006 06:37:41 +0000 (06:37 +0000)
tweaking to try to get alltests to work, unsuccessful

test/alltests.py
test/inheritance.py [new file with mode: 0644]
test/tables.py

index 681014448d3602c09e3ca99bdbb454aa5f6d2cb1..f77a46470bd070a696c2ee046cfaef6b6fe69437 100644 (file)
@@ -39,6 +39,7 @@ def suite():
         # more select/persistence, backrefs
         'manytomany',
         #'onetoone',
+       #'inheritance',
         
         # extensions
         'proxy_engine',
diff --git a/test/inheritance.py b/test/inheritance.py
new file mode 100644 (file)
index 0000000..b746554
--- /dev/null
@@ -0,0 +1,86 @@
+from sqlalchemy import *
+import testbase
+import string
+import sqlalchemy.attributes as attr
+
+
+principals = Table(
+    'principals',
+    testbase.db,
+    Column('principal_id', Integer, Sequence('principal_id_seq', optional=False), primary_key=True),
+    Column('name', String(50), nullable=False),    
+    )
+
+users = Table(
+    'prin_users',
+    testbase.db,
+    Column('principal_id', Integer, ForeignKey('principals.principal_id'), primary_key=True),
+    Column('password', String(50), nullable=False),
+    Column('email', String(50), nullable=False),
+    Column('login_id', String(50), nullable=False),
+    
+    )
+
+groups = Table(
+    'prin_groups',
+    testbase.db,
+    Column( 'principal_id', Integer, ForeignKey('principals.principal_id'), primary_key=True),
+    
+    )
+
+user_group_map = Table(
+    'prin_user_group_map',
+    testbase.db,
+    Column('user_id', Integer, ForeignKey( "prin_users.principal_id"), primary_key=True ),
+    Column('group_id', Integer, ForeignKey( "prin_groups.principal_id"), primary_key=True ),
+    #Column('user_id', Integer, ForeignKey( "prin_users.principal_id"),  ),
+    #Column('group_id', Integer, ForeignKey( "prin_groups.principal_id"),  ),    
+    
+    )
+
+class Principal( object ):
+    pass
+
+class User( Principal ):
+    pass
+
+class Group( Principal ):
+    pass
+
+class InheritTest(testbase.AssertMixin):
+        def setUpAll(self):
+            principals.create()
+            users.create()
+            groups.create()
+            user_group_map.create()
+        def tearDownAll(self):
+            user_group_map.drop()
+            groups.drop()
+            users.drop()
+            principals.drop()
+        def setUp(self):
+            objectstore.clear()
+            clear_mappers()
+            
+        def testbasic(self):
+            assign_mapper( Principal, principals )
+            assign_mapper( 
+                User, 
+                users,
+                inherits=Principal.mapper
+                )
+
+            assign_mapper( 
+                Group,
+                groups,
+                inherits=Principal.mapper,
+                properties=dict( users = relation(User.mapper, user_group_map, lazy=True, backref="groups") )
+                )
+
+            g = Group(name="group1")
+            g.users.append(User(name="user1", password="pw", email="foo@bar.com", login_id="lg1"))
+            
+            objectstore.commit()
+
+if __name__ == "__main__":    
+    testbase.main()
index fecd86bc4bc86bba3092ab4eb7677871d7bd7ccb..7cc524674c668ae678a01f4b6bc424772c1c308a 100644 (file)
@@ -14,35 +14,41 @@ db = testbase.db
 users = Table('users', db,
     Column('user_id', Integer, Sequence('user_id_seq', optional=True), primary_key = True),
     Column('user_name', String(40)),
+    
 )
 
 addresses = Table('email_addresses', db,
     Column('address_id', Integer, Sequence('address_id_seq', optional=True), primary_key = True),
     Column('user_id', Integer, ForeignKey(users.c.user_id)),
     Column('email_address', String(40)),
+    
 )
 
 orders = Table('orders', db,
     Column('order_id', Integer, Sequence('order_id_seq', optional=True), primary_key = True),
     Column('user_id', Integer, ForeignKey(users.c.user_id)),
     Column('description', String(50)),
-    Column('isopen', Integer)
+    Column('isopen', Integer),
+    
 )
 
 orderitems = Table('items', db,
     Column('item_id', INT, Sequence('items_id_seq', optional=True), primary_key = True),
     Column('order_id', INT, ForeignKey("orders")),
-    Column('item_name', VARCHAR(50))
+    Column('item_name', VARCHAR(50)),
+    
 )
 
 keywords = Table('keywords', db,
     Column('keyword_id', Integer, Sequence('keyword_id_seq', optional=True), primary_key = True),
-    Column('name', VARCHAR(50))
+    Column('name', VARCHAR(50)),
+    
 )
 
 itemkeywords = Table('itemkeywords', db,
     Column('item_id', INT, ForeignKey("items")),
-    Column('keyword_id', INT, ForeignKey("keywords"))
+    Column('keyword_id', INT, ForeignKey("keywords")),
+    
 )
 
 def create():