summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authormike bayer <mike_mp@zzzcomputing.com>2023-03-29 13:15:55 +0000
committerGerrit Code Review <gerrit@bbpush.zzzcomputing.com>2023-03-29 13:15:55 +0000
commit41e4fdb08722ec9843663500c6121e18c1bb0016 (patch)
tree3027abd8a3893f520a74f1494a70f074d6048b53 /test
parentd878f9074c77aebc698ecc492babba96edae5c05 (diff)
parent9e85abb221af13057621ea066af4e15b2f1dfb03 (diff)
downloadsqlalchemy-41e4fdb08722ec9843663500c6121e18c1bb0016.tar.gz
Merge "disable raise sql for the delete cascade" into main
Diffstat (limited to 'test')
-rw-r--r--test/orm/test_cascade.py76
1 files changed, 74 insertions, 2 deletions
diff --git a/test/orm/test_cascade.py b/test/orm/test_cascade.py
index a46164703..8a545b03b 100644
--- a/test/orm/test_cascade.py
+++ b/test/orm/test_cascade.py
@@ -63,10 +63,10 @@ class CascadeArgTest(fixtures.MappedTest):
@classmethod
def setup_classes(cls):
- class User(cls.Basic):
+ class User(cls.Comparable):
pass
- class Address(cls.Basic):
+ class Address(cls.Comparable):
pass
def test_delete_with_passive_deletes_all(self):
@@ -173,6 +173,78 @@ class CascadeArgTest(fixtures.MappedTest):
eq_(rel.cascade, {"save-update", "merge", "expunge"})
+class CasadeWithRaiseloadTest(fixtures.MappedTest):
+ @classmethod
+ def define_tables(cls, metadata):
+ Table(
+ "users",
+ metadata,
+ Column(
+ "id", Integer, primary_key=True, test_needs_autoincrement=True
+ ),
+ Column("name", String(30), nullable=False),
+ )
+ Table(
+ "addresses",
+ metadata,
+ Column(
+ "id", Integer, primary_key=True, test_needs_autoincrement=True
+ ),
+ Column("user_id", Integer, ForeignKey("users.id")),
+ Column("email_address", String(50), nullable=False),
+ )
+
+ @classmethod
+ def setup_classes(cls):
+ class User(cls.Comparable):
+ pass
+
+ class Address(cls.Comparable):
+ pass
+
+ def test_delete_skips_lazy_raise(self):
+ User, Address = self.classes.User, self.classes.Address
+ users, addresses = self.tables.users, self.tables.addresses
+
+ self.mapper_registry.map_imperatively(
+ User,
+ users,
+ properties={
+ "addresses": relationship(
+ Address, cascade="all, delete-orphan", lazy="raise"
+ )
+ },
+ )
+ self.mapper_registry.map_imperatively(Address, addresses)
+
+ self.mapper_registry.metadata.create_all(testing.db)
+
+ sess = fixture_session()
+ u1 = User(
+ name="u1",
+ addresses=[
+ Address(email_address="e1"),
+ Address(email_address="e2"),
+ ],
+ )
+ sess.add(u1)
+ sess.commit()
+
+ eq_(
+ sess.scalars(
+ select(Address).order_by(Address.email_address)
+ ).all(),
+ [Address(email_address="e1"), Address(email_address="e2")],
+ )
+
+ sess.close()
+
+ sess.delete(u1)
+ sess.commit()
+
+ eq_(sess.scalars(select(Address)).all(), [])
+
+
class O2MCascadeDeleteOrphanTest(fixtures.MappedTest):
run_inserts = None