]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
added testcase for upcoming ticket
authorMike Bayer <mike_mp@zzzcomputing.com>
Fri, 19 Jan 2007 02:44:47 +0000 (02:44 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Fri, 19 Jan 2007 02:44:47 +0000 (02:44 +0000)
test/orm/cascade.py

index de17394c94c1f4382640ad65a9c553ae6b0d1b48..e770a4ec4228851b9cde24c4a3a56cd3ece9f62e 100644 (file)
@@ -169,5 +169,55 @@ class M2OCascadeTest(testbase.AssertMixin):
         jack.pref = None
         ctx.current.flush()
 
+class M2MCascadeTest(testbase.AssertMixin):
+    def setUpAll(self):
+        global metadata, a, b, atob
+        metadata = BoundMetaData(testbase.db)
+        a = Table('a', metadata, 
+            Column('id', Integer, primary_key=True),
+            Column('data', String(30))
+            )
+        b = Table('b', metadata,     
+            Column('id', Integer, primary_key=True),
+            Column('data', String(30))
+            )
+        atob = Table('atob', metadata, 
+            Column('aid', Integer, ForeignKey('a.id')),
+            Column('bid', Integer, ForeignKey('b.id'))
+            
+            )
+        metadata.create_all()
+        
+    def tearDownAll(self):
+        metadata.drop_all()
+    @testbase.supported('')
+    def testdeleteorphan(self):
+        class A(object):
+            def __init__(self, data):
+                self.data = data
+        class B(object):
+            def __init__(self, data):
+                self.data = data
+        
+        mapper(A, a, properties={
+            # if no backref here, delete-orphan fails
+            'bs':relation(B, secondary=atob, cascade="all, delete-orphan")
+        })
+        mapper(B, b)
+        
+        sess = create_session()
+        a1 = A('a1')
+        b1 = B('b1')
+        a1.bs.append(b1)
+        sess.save(a1)
+        sess.flush()
+        
+        a1.bs.remove(b1)
+        sess.flush()
+        assert atob.count().scalar() ==0
+        assert b.count().scalar() == 0
+        assert a.count().scalar() == 1
+        
+        
 if __name__ == "__main__":
     testbase.main()