- changed status to resolved
association proxy dict update() method needs to check for dict/sequence better
Issue #2275
resolved
class DictOfTupleUpdateTest(fixtures.TestBase):
def setup(self):
class B(object):
def __init__(self, key, elem):
self.key = key
self.elem = elem
class A(object):
elements = association_proxy("orig", "elem", creator=B)
m = MetaData()
a = Table('a', m, Column('id', Integer, primary_key=True))
b = Table('b', m, Column('id', Integer, primary_key=True),
Column('aid', Integer, ForeignKey('a.id')))
mapper(A, a, properties={
'orig':relationship(B, collection_class=attribute_mapped_collection('key'))
})
mapper(B, b)
self.A = A
self.B = B
def test_update_one_elem_dict(self):
a1 = self.A()
a1.elements.update({("B", 3): 'elem2'})
eq_(a1.elements, {("B",3):'elem2'})
def test_update_multi_elem_dict(self):
a1 = self.A()
a1.elements.update({("B", 3): 'elem2', ("C", 4): "elem3"})
eq_(a1.elements, {("B",3):'elem2', ("C", 4): "elem3"})
def test_update_one_elem_list(self):
a1 = self.A()
a1.elements.update([3), 'elem2')]((("B",))
eq_(a1.elements, {("B",3):'elem2'})
def test_update_multi_elem_list(self):
a1 = self.A()
a1.elements.update([3), 'elem2'), (("C", 4), "elem3")]((("B",))
eq_(a1.elements, {("B",3):'elem2', ("C", 4): "elem3"})
def test_update_one_elem_varg(self):
a1 = self.A()
assert_raises_message(
ValueError,
"dictionary update sequence requires "
"2-element tuples",
a1.elements.update, (("B", 3), 'elem2')
)
def test_update_multi_elem_varg(self):
a1 = self.A()
assert_raises_message(
TypeError,
"update expected at most 1 arguments, got 2",
a1.elements.update,
(("B", 3), 'elem2'), (("C", 4), "elem3")
)
Comments (2)
-
reporter -
reporter - removed milestone
Removing milestone: 0.7.3 (automated comment)
- Log in to comment
1cf80dc5b273dc92607863bdd3af859840aa3364