(self)
| 112 | ) |
| 113 | |
| 114 | def test_validator_w_removes(self): |
| 115 | users, addresses, Address = ( |
| 116 | self.tables.users, |
| 117 | self.tables.addresses, |
| 118 | self.classes.Address, |
| 119 | ) |
| 120 | canary = Mock() |
| 121 | |
| 122 | class User(ComparableEntity): |
| 123 | @validates("name", include_removes=True) |
| 124 | def validate_name(self, key, item, remove): |
| 125 | canary(key, item, remove) |
| 126 | return item |
| 127 | |
| 128 | @validates("addresses", include_removes=True) |
| 129 | def validate_address(self, key, item, remove): |
| 130 | canary(key, item, remove) |
| 131 | return item |
| 132 | |
| 133 | self.mapper_registry.map_imperatively( |
| 134 | User, users, properties={"addresses": relationship(Address)} |
| 135 | ) |
| 136 | self.mapper_registry.map_imperatively(Address, addresses) |
| 137 | |
| 138 | u1 = User() |
| 139 | u1.name = "ed" |
| 140 | u1.name = "mary" |
| 141 | del u1.name |
| 142 | a1, a2, a3 = Address(), Address(), Address() |
| 143 | u1.addresses.append(a1) |
| 144 | u1.addresses.remove(a1) |
| 145 | u1.addresses = [a1, a2] |
| 146 | u1.addresses = [a2, a3] |
| 147 | |
| 148 | eq_( |
| 149 | canary.mock_calls, |
| 150 | [ |
| 151 | call("name", "ed", False), |
| 152 | call("name", "mary", False), |
| 153 | call("name", "mary", True), |
| 154 | # append a1 |
| 155 | call("addresses", a1, False), |
| 156 | # remove a1 |
| 157 | call("addresses", a1, True), |
| 158 | # set to [a1, a2] - this is two appends |
| 159 | call("addresses", a1, False), |
| 160 | call("addresses", a2, False), |
| 161 | # set to [a2, a3] - this is a remove of a1, |
| 162 | # append of a3. the appends are first. |
| 163 | # in 1.2 due to #3896, we also get 'a2' in the |
| 164 | # validates as it is part of the set |
| 165 | call("addresses", a2, False), |
| 166 | call("addresses", a3, False), |
| 167 | call("addresses", a1, True), |
| 168 | ], |
| 169 | ) |
| 170 | |
| 171 | def test_validator_bulk_collection_set(self): |
nothing calls this directly
no test coverage detected