diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-06-22 22:23:57 +0000 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-06-22 22:23:57 +0000 |
| commit | ad7ffd767d26aef8caba3e52b8c3c1114ec6709c (patch) | |
| tree | 8039bb3553aa64a6710cf37a442338f9e9412605 /test | |
| parent | 0e0cedaf9dc085f61949fbe93f389f5a1f5b9cf8 (diff) | |
| download | sqlalchemy-ad7ffd767d26aef8caba3e52b8c3c1114ec6709c.tar.gz | |
fixes to inheritance firing off dependency processors correctly + unittest
Diffstat (limited to 'test')
| -rw-r--r-- | test/orm/inheritance.py | 59 |
1 files changed, 58 insertions, 1 deletions
diff --git a/test/orm/inheritance.py b/test/orm/inheritance.py index 095763867..842a63a26 100644 --- a/test/orm/inheritance.py +++ b/test/orm/inheritance.py @@ -412,6 +412,63 @@ class InheritTest6(testbase.AssertMixin): q = sess.query(Bar) self.assert_(len(q.selectfirst().lazy) == 1) self.assert_(len(q.selectfirst().eager) == 1) - + + +class InheritTest7(testbase.AssertMixin): + """test dependency sorting among inheriting mappers""" + def setUpAll(self): + global users, roles, user_roles, admins, metadata + metadata=BoundMetaData(testbase.db) + users = Table('user', metadata, + Column('id', Integer, primary_key=True), + Column('email', String(128)), + Column('password', String(16)), + ) + + roles = Table('role', metadata, + Column('id', Integer, primary_key=True), + Column('description', String(32)) + ) + + user_roles = Table('user_role', metadata, + Column('user_id', Integer, ForeignKey('user.id'), primary_key=True), + Column('role_id', Integer, ForeignKey('role.id'), primary_key=True) + ) + + admins = Table('admin', metadata, + Column('id', Integer, primary_key=True), + Column('user_id', Integer, ForeignKey('user.id')) + ) + metadata.create_all() + def tearDownAll(self): + metadata.drop_all() + + def testbasic(self): + class User(object):pass + class Role(object):pass + class Admin(User):pass + role_mapper = mapper(Role, roles) + user_mapper = mapper(User, users, properties = { + 'roles' : relation(Role, secondary=user_roles, lazy=False, private=False) + } + ) + admin_mapper = mapper(Admin, admins, inherits=user_mapper) + sess = create_session() + adminrole = Role('admin') + sess.save(adminrole) + sess.flush() + + # create an Admin, and append a Role. the dependency processors + # corresponding to the "roles" attribute for the Admin mapper and the User mapper + # have to insure that two dependency processors dont fire off and insert the + # many to many row twice. + a = Admin() + a.roles.append(adminrole) + a.password = 'admin' + sess.save(a) + sess.flush() + + assert user_roles.count().scalar() == 1 + if __name__ == "__main__": testbase.main() |
