Merge branch 'master' into rel_0_9

This commit is contained in:
Mike Bayer
2014-05-14 10:03:40 -04:00
3 changed files with 30 additions and 0 deletions
+8
View File
@@ -11,6 +11,14 @@
.. changelog::
:version: 0.8.7
.. change::
:tags: bug, ext
:versions: 0.9.5
:tickets: 3051
Fixed bug in mutable extension where :class:`.MutableDict` did not
report change events for the ``setdefault()`` dictionary operation.
.. change::
:tags: bug, mysql
:versions: 0.9.5
+5
View File
@@ -610,6 +610,11 @@ class MutableDict(Mutable, dict):
dict.__setitem__(self, key, value)
self.changed()
def setdefault(self, key, value):
dict.setdefault(self, key, value)
self.changed()
def __delitem__(self, key):
"""Detect dictionary del events and emit change events."""
dict.__delitem__(self, key)
+17
View File
@@ -86,6 +86,23 @@ class _MutableDictTestBase(object):
eq_(f1.data, {})
def test_setdefault(self):
sess = Session()
f1 = Foo(data={'a': 'b'})
sess.add(f1)
sess.commit()
f1.data.setdefault('c', 'd')
sess.commit()
eq_(f1.data, {'a': 'b', 'c': 'd'})
f1.data.setdefault('c', 'q')
sess.commit()
eq_(f1.data, {'a': 'b', 'c': 'd'})
def test_replace(self):
sess = Session()
f1 = Foo(data={'a': 'b'})