test that merge doesn't interfere with a relationship() target that specifically doesn't include 'merge' cascade.
(self)
| 817 | eq_(u2.id, 5) |
| 818 | |
| 819 | def test_no_relationship_cascade(self): |
| 820 | """test that merge doesn't interfere with a relationship() |
| 821 | target that specifically doesn't include 'merge' cascade. |
| 822 | """ |
| 823 | |
| 824 | Address, addresses, users, User = ( |
| 825 | self.classes.Address, |
| 826 | self.tables.addresses, |
| 827 | self.tables.users, |
| 828 | self.classes.User, |
| 829 | ) |
| 830 | |
| 831 | self.mapper_registry.map_imperatively( |
| 832 | Address, |
| 833 | addresses, |
| 834 | properties={"user": relationship(User, cascade="save-update")}, |
| 835 | ) |
| 836 | self.mapper_registry.map_imperatively(User, users) |
| 837 | sess = fixture_session() |
| 838 | u1 = User(name="fred") |
| 839 | a1 = Address(email_address="asdf", user=u1) |
| 840 | sess.add(a1) |
| 841 | sess.flush() |
| 842 | |
| 843 | a2 = Address(id=a1.id, email_address="bar", user=User(name="hoho")) |
| 844 | a2 = sess.merge(a2) |
| 845 | sess.flush() |
| 846 | |
| 847 | # no expire of the attribute |
| 848 | |
| 849 | assert a2.__dict__["user"] is u1 |
| 850 | |
| 851 | # merge succeeded |
| 852 | eq_( |
| 853 | sess.query(Address).all(), [Address(id=a1.id, email_address="bar")] |
| 854 | ) |
| 855 | |
| 856 | # didn't touch user |
| 857 | eq_(sess.query(User).all(), [User(name="fred")]) |
| 858 | |
| 859 | def test_one_to_many_cascade(self): |
| 860 | users, Address, addresses, User = ( |
nothing calls this directly
no test coverage detected