diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2011-05-14 10:23:12 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2011-05-14 10:23:12 -0400 |
| commit | 501b8aec1b2ccd3cb652cd6f7f8d00047ef5e84c (patch) | |
| tree | d7b6ff0b968e069cb770140e031e5f3bd0a5ed3b /test/ext/test_mutable.py | |
| parent | 9826ba73a6a614a92be7104474428dde40c2d773 (diff) | |
| download | sqlalchemy-501b8aec1b2ccd3cb652cd6f7f8d00047ef5e84c.tar.gz | |
- Fixed bugs in sqlalchemy.ext.mutable extension where
`None` was not appropriately handled, replacement
events were not appropriately handled.
[ticket:2143]
Diffstat (limited to 'test/ext/test_mutable.py')
| -rw-r--r-- | test/ext/test_mutable.py | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/test/ext/test_mutable.py b/test/ext/test_mutable.py index 236d711b2..ceff0d649 100644 --- a/test/ext/test_mutable.py +++ b/test/ext/test_mutable.py @@ -4,7 +4,7 @@ from sqlalchemy.orm import mapper, Session, composite from sqlalchemy.orm.mapper import Mapper from sqlalchemy.orm.instrumentation import ClassManager from test.lib.schema import Table, Column -from test.lib.testing import eq_ +from test.lib.testing import eq_, assert_raises_message from test.lib.util import picklers from test.lib import testing from test.lib import fixtures @@ -60,6 +60,21 @@ class _MutableDictTestBase(object): ClassManager.dispatch._clear() super(_MutableDictTestBase, self).teardown() + def test_coerce_none(self): + sess = Session() + f1 = Foo(data=None) + sess.add(f1) + sess.commit() + eq_(f1.data, None) + + def test_coerce_raise(self): + assert_raises_message( + ValueError, + "Attribute 'data' does not accept objects of " + "type <type 'set'>", + Foo, data=set([1,2,3]) + ) + def test_in_place_mutation(self): sess = Session() @@ -72,6 +87,16 @@ class _MutableDictTestBase(object): eq_(f1.data, {'a':'c'}) + def test_replace(self): + sess = Session() + f1 = Foo(data={'a':'b'}) + sess.add(f1) + sess.flush() + + f1.data = {'b':'c'} + sess.commit() + eq_(f1.data, {'b':'c'}) + def test_pickle_parent(self): sess = Session() |
