]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- [bug] Updated warning message when setting
authorMike Bayer <mike_mp@zzzcomputing.com>
Sun, 4 Dec 2011 21:23:55 +0000 (16:23 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sun, 4 Dec 2011 21:23:55 +0000 (16:23 -0500)
delete-orphan without delete to no longer
refer to 0.6, as we never got around to
upgrading this to an exception.  Ideally
this might be better as an exception but
it's not critical either way.  [ticket:2325]
- add new test suite to test_cascades for cascade
arguments

CHANGES
lib/sqlalchemy/orm/util.py
test/orm/test_cascade.py
test/orm/test_mapper.py

diff --git a/CHANGES b/CHANGES
index 6253467b0aa475cd6c9c03e5aa58fbed7f34b54e..2b0220714d9bc801d89fb29b28cd36811a8b3947 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -101,6 +101,13 @@ CHANGES
     [ticket:2339].  Thanks to Fayaz Yusuf Khan
     for the patch.
 
+  - [bug] Updated warning message when setting
+    delete-orphan without delete to no longer
+    refer to 0.6, as we never got around to 
+    upgrading this to an exception.  Ideally
+    this might be better as an exception but
+    it's not critical either way.  [ticket:2325]
+
 - sql
    - [bug] related to [ticket:2316], made some 
      adjustments to the change from [ticket:2261]
index ef0615762677e56eca3a23a05cf7607ca4232709..91095ac40ebe8534071d03f3fbc4e47cb89478db 100644 (file)
@@ -41,7 +41,7 @@ class CascadeOptions(dict):
 
         if self.delete_orphan and not self.delete:
             util.warn("The 'delete-orphan' cascade option requires "
-                        "'delete'.  This will raise an error in 0.6.")
+                        "'delete'.")
 
         for x in values:
             if x not in all_cascades:
index 45cba88de618f29b2004986e8f4af511c7346d44..8dd55d14e9aac3830cebeabba66606d4f129ead1 100644 (file)
@@ -11,6 +11,50 @@ from test.lib.testing import eq_
 from test.lib import fixtures
 from test.orm import _fixtures
 
+class CascadeArgTest(fixtures.MappedTest):
+    run_inserts = None
+    run_create_tables = None
+    run_deletes = None
+
+    @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.Basic):
+            pass
+        class Address(cls.Basic):
+            pass
+
+    def test_delete_orphan_without_delete(self):
+        User, Address = self.classes.User, self.classes.Address
+        users, addresses = self.tables.users, self.tables.addresses
+
+        assert_raises_message(
+            sa_exc.SAWarning,
+            "The 'delete-orphan' cascade option requires 'delete'.",
+            relationship, Address, cascade="save-update, delete-orphan"
+        )
+
+    def test_bad_cascade(self):
+        addresses, Address = self.tables.addresses, self.classes.Address
+
+        mapper(Address, addresses)
+        assert_raises_message(
+            sa_exc.ArgumentError,
+            "Invalid cascade option 'fake'",
+            relationship, Address, cascade="fake, all, delete-orphan"
+        )
+
 
 class O2MCascadeDeleteOrphanTest(fixtures.MappedTest):
     run_inserts = None
index 4c5f9ec3525c5f0c63ea632e658d36424a83dd6e..1aae8215fe2d96a93f71d3b435ff3948bafb8de9 100644 (file)
@@ -95,13 +95,6 @@ class MapperTest(_fixtures.FixtureTest, AssertsCompiledSQL):
                           getattr, sa.orm.class_mapper(User), 'properties')
 
 
-    def test_bad_cascade(self):
-        addresses, Address = self.tables.addresses, self.classes.Address
-
-        mapper(Address, addresses)
-        assert_raises(sa.exc.ArgumentError,
-                          relationship, Address, cascade="fake, all, delete-orphan")
-
     def test_friendly_attribute_str_on_uncompiled_boom(self):
         User, users = self.classes.User, self.tables.users