From: Mike Bayer Date: Thu, 16 Feb 2006 06:37:41 +0000 (+0000) Subject: inheritance test X-Git-Tag: rel_0_1_1~41 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=435d2355c956f1af215a8e3d90fc1b3a5b7b903f;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git inheritance test tweaking to try to get alltests to work, unsuccessful --- diff --git a/test/alltests.py b/test/alltests.py index 681014448d..f77a46470b 100644 --- a/test/alltests.py +++ b/test/alltests.py @@ -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 index 0000000000..b7465548e6 --- /dev/null +++ b/test/inheritance.py @@ -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() diff --git a/test/tables.py b/test/tables.py index fecd86bc4b..7cc524674c 100644 --- a/test/tables.py +++ b/test/tables.py @@ -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():