mirror of
https://github.com/sqlalchemy/sqlalchemy.git
synced 2026-06-05 15:23:48 -04:00
Merge branch 'master' into rel_0_9
This commit is contained in:
Vendored
+8
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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'})
|
||||
|
||||
Reference in New Issue
Block a user