MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / test_one_to_many_cascade

Method test_one_to_many_cascade

test/orm/test_merge.py:859–907  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

857 eq_(sess.query(User).all(), [User(name="fred")])
858
859 def test_one_to_many_cascade(self):
860 users, Address, addresses, User = (
861 self.tables.users,
862 self.classes.Address,
863 self.tables.addresses,
864 self.classes.User,
865 )
866
867 self.mapper_registry.map_imperatively(
868 User,
869 users,
870 properties={
871 "addresses": relationship(
872 self.mapper_registry.map_imperatively(Address, addresses)
873 )
874 },
875 )
876
877 load = self.load_tracker(User)
878 self.load_tracker(Address, load)
879
880 sess = fixture_session(expire_on_commit=False)
881 u = User(name="fred")
882 a1 = Address(email_address="foo@bar")
883 a2 = Address(email_address="foo@quux")
884 u.addresses.extend([a1, a2])
885
886 sess.add(u)
887 sess.commit()
888
889 eq_(load.called, 0)
890
891 sess2 = fixture_session()
892 u2 = sess2.get(User, u.id)
893 eq_(load.called, 1)
894
895 u.addresses[1].email_address = "addr 2 modified"
896 sess2.merge(u)
897 eq_(u2.addresses[1].email_address, "addr 2 modified")
898 eq_(load.called, 3)
899
900 sess3 = fixture_session()
901 u3 = sess3.get(User, u.id)
902 eq_(load.called, 4)
903
904 u.name = "also fred"
905 sess3.merge(u)
906 eq_(load.called, 6)
907 eq_(u3.name, "also fred")
908
909 def test_many_to_one_cascade(self):
910 Address, addresses, users, User = (

Callers

nothing calls this directly

Calls 12

load_trackerMethod · 0.95
relationshipFunction · 0.90
fixture_sessionFunction · 0.90
eq_Function · 0.90
map_imperativelyMethod · 0.80
UserClass · 0.70
AddressClass · 0.70
extendMethod · 0.45
addMethod · 0.45
commitMethod · 0.45
getMethod · 0.45
mergeMethod · 0.45

Tested by

no test coverage detected