summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2011-12-04 16:23:55 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2011-12-04 16:23:55 -0500
commitb3fa5d0326a6aa7c0fc9df08d13d849e468662a4 (patch)
treec0514a85526b4751e7b7982621f103a81ce6f52c
parentdf9e3f2fb9804486e2e95bff2f4d2b52fff776c2 (diff)
downloadsqlalchemy-b3fa5d0326a6aa7c0fc9df08d13d849e468662a4.tar.gz
- [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] - add new test suite to test_cascades for cascade arguments
-rw-r--r--CHANGES7
-rw-r--r--lib/sqlalchemy/orm/util.py2
-rw-r--r--test/orm/test_cascade.py44
-rw-r--r--test/orm/test_mapper.py7
4 files changed, 52 insertions, 8 deletions
diff --git a/CHANGES b/CHANGES
index 6253467b0..2b0220714 100644
--- 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]
diff --git a/lib/sqlalchemy/orm/util.py b/lib/sqlalchemy/orm/util.py
index ef0615762..91095ac40 100644
--- a/lib/sqlalchemy/orm/util.py
+++ b/lib/sqlalchemy/orm/util.py
@@ -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:
diff --git a/test/orm/test_cascade.py b/test/orm/test_cascade.py
index 45cba88de..8dd55d14e 100644
--- a/test/orm/test_cascade.py
+++ b/test/orm/test_cascade.py
@@ -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
diff --git a/test/orm/test_mapper.py b/test/orm/test_mapper.py
index 4c5f9ec35..1aae8215f 100644
--- a/test/orm/test_mapper.py
+++ b/test/orm/test_mapper.py
@@ -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