(self)
| 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 = ( |
nothing calls this directly
no test coverage detected