From: Mike Bayer Date: Sun, 4 Dec 2011 21:23:55 +0000 (-0500) Subject: - [bug] Updated warning message when setting X-Git-Tag: rel_0_7_4~26 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b3fa5d0326a6aa7c0fc9df08d13d849e468662a4;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - [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 --- diff --git a/CHANGES b/CHANGES index 6253467b0a..2b0220714d 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 ef06157626..91095ac40e 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 45cba88de6..8dd55d14e9 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 4c5f9ec352..1aae8215fe 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