]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
added an inheritance test
authorMike Bayer <mike_mp@zzzcomputing.com>
Fri, 14 Dec 2007 18:08:55 +0000 (18:08 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Fri, 14 Dec 2007 18:08:55 +0000 (18:08 +0000)
test/orm/memusage.py

index 756074010b7b4218d2807868accce9c890304b76..cd109f4fa133ebd6008d2190f79f5bfe73ba8a72 100644 (file)
@@ -139,6 +139,57 @@ class MemUsageTest(AssertMixin):
         finally:
             metadata.drop_all()
 
+    def test_with_inheritance(self):
+        metadata = MetaData(testbase.db)
+
+        table1 = Table("mytable", metadata, 
+            Column('col1', Integer, primary_key=True),
+            Column('col2', String(30))
+            )
+
+        table2 = Table("mytable2", metadata, 
+            Column('col1', Integer, ForeignKey('mytable.col1'), primary_key=True),
+            Column('col3', String(30)),
+            )
+
+        @profile_memory
+        def go():
+            class A(Base):
+                pass
+            class B(A):
+                pass
+            
+            mapper(A, table1, polymorphic_on=table1.c.col2, polymorphic_identity='a')
+            mapper(B, table2, inherits=A, polymorphic_identity='b')
+            
+            sess = create_session()
+            a1 = A()
+            a2 = A()
+            b1 = B(col3='b1')
+            b2 = B(col3='b2')
+            for x in [a1,a2,b1, b2]:
+                sess.save(x)
+            sess.flush()
+            sess.clear()
+
+            alist = sess.query(A).all()
+            self.assertEquals(
+                [
+                    A(), A(), B(col3='b1'), B(col3='b2')
+                ], 
+                alist)
+
+            for a in alist:
+                sess.delete(a)
+            sess.flush()
+            clear_mappers()
+
+        metadata.create_all()
+        try:
+            go()
+        finally:
+            metadata.drop_all()
+
     
 if __name__ == '__main__':
     testbase.main()