MCPcopy Create free account
hub / github.com/sqlalchemy/sqlalchemy / test_collection

Method test_collection

test/orm/test_validators.py:46–81  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

44 )
45
46 def test_collection(self):
47 users, addresses, Address = (
48 self.tables.users,
49 self.tables.addresses,
50 self.classes.Address,
51 )
52
53 canary = Mock()
54
55 class User(ComparableEntity):
56 @validates("addresses")
57 def validate_address(self, key, ad):
58 canary(key, ad)
59 assert "@" in ad.email_address
60 return ad
61
62 self.mapper_registry.map_imperatively(
63 User, users, properties={"addresses": relationship(Address)}
64 )
65 self.mapper_registry.map_imperatively(Address, addresses)
66 sess = fixture_session()
67 u1 = User(name="edward")
68 a0 = Address(email_address="noemail")
69 assert_raises(AssertionError, u1.addresses.append, a0)
70 a1 = Address(id=15, email_address="foo@bar.com")
71 u1.addresses.append(a1)
72 eq_(canary.mock_calls, [call("addresses", a0), call("addresses", a1)])
73 sess.add(u1)
74 sess.commit()
75
76 eq_(
77 sess.query(User).filter_by(name="edward").one(),
78 User(
79 name="edward", addresses=[Address(email_address="foo@bar.com")]
80 ),
81 )
82
83 def test_validators_dict(self):
84 users, addresses, Address = (

Callers

nothing calls this directly

Calls 14

relationshipFunction · 0.90
fixture_sessionFunction · 0.90
assert_raisesFunction · 0.90
eq_Function · 0.90
callFunction · 0.85
map_imperativelyMethod · 0.80
UserClass · 0.70
AddressClass · 0.70
appendMethod · 0.45
addMethod · 0.45
commitMethod · 0.45
oneMethod · 0.45

Tested by

no test coverage detected