summaryrefslogtreecommitdiff
path: root/test/ext/test_mutable.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2011-05-14 10:23:12 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2011-05-14 10:23:12 -0400
commit501b8aec1b2ccd3cb652cd6f7f8d00047ef5e84c (patch)
treed7b6ff0b968e069cb770140e031e5f3bd0a5ed3b /test/ext/test_mutable.py
parent9826ba73a6a614a92be7104474428dde40c2d773 (diff)
downloadsqlalchemy-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.py27
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()