diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2011-12-04 16:23:55 -0500 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2011-12-04 16:23:55 -0500 |
| commit | b3fa5d0326a6aa7c0fc9df08d13d849e468662a4 (patch) | |
| tree | c0514a85526b4751e7b7982621f103a81ce6f52c | |
| parent | df9e3f2fb9804486e2e95bff2f4d2b52fff776c2 (diff) | |
| download | sqlalchemy-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-- | CHANGES | 7 | ||||
| -rw-r--r-- | lib/sqlalchemy/orm/util.py | 2 | ||||
| -rw-r--r-- | test/orm/test_cascade.py | 44 | ||||
| -rw-r--r-- | test/orm/test_mapper.py | 7 |
4 files changed, 52 insertions, 8 deletions
@@ -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 |
