diff options
| author | mike bayer <mike_mp@zzzcomputing.com> | 2023-03-29 13:15:55 +0000 |
|---|---|---|
| committer | Gerrit Code Review <gerrit@bbpush.zzzcomputing.com> | 2023-03-29 13:15:55 +0000 |
| commit | 41e4fdb08722ec9843663500c6121e18c1bb0016 (patch) | |
| tree | 3027abd8a3893f520a74f1494a70f074d6048b53 /test | |
| parent | d878f9074c77aebc698ecc492babba96edae5c05 (diff) | |
| parent | 9e85abb221af13057621ea066af4e15b2f1dfb03 (diff) | |
| download | sqlalchemy-41e4fdb08722ec9843663500c6121e18c1bb0016.tar.gz | |
Merge "disable raise sql for the delete cascade" into main
Diffstat (limited to 'test')
| -rw-r--r-- | test/orm/test_cascade.py | 76 |
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 |
