MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / test_unsaved_cascade

Method test_unsaved_cascade

test/orm/test_merge.py:453–526  ·  view source on GitHub ↗

Merge of a transient entity with two child transient entities, with a bidirectional relationship.

(self)

Source from the content-addressed store, hash-verified

451 )
452
453 def test_unsaved_cascade(self):
454 """Merge of a transient entity with two child transient
455 entities, with a bidirectional relationship."""
456
457 users, Address, addresses, User = (
458 self.tables.users,
459 self.classes.Address,
460 self.tables.addresses,
461 self.classes.User,
462 )
463
464 self.mapper_registry.map_imperatively(
465 User,
466 users,
467 properties={
468 "addresses": relationship(
469 self.mapper_registry.map_imperatively(Address, addresses),
470 cascade="all",
471 backref="user",
472 )
473 },
474 )
475 load = self.load_tracker(User)
476 self.load_tracker(Address, load)
477 sess = fixture_session()
478
479 u = User(id=7, name="fred")
480 a1 = Address(email_address="foo@bar.com")
481 a2 = Address(email_address="hoho@bar.com")
482 u.addresses.append(a1)
483 u.addresses.append(a2)
484
485 u2 = sess.merge(u)
486 eq_(load.called, 3)
487
488 eq_(
489 u,
490 User(
491 id=7,
492 name="fred",
493 addresses=[
494 Address(email_address="foo@bar.com"),
495 Address(email_address="hoho@bar.com"),
496 ],
497 ),
498 )
499 eq_(
500 u2,
501 User(
502 id=7,
503 name="fred",
504 addresses=[
505 Address(email_address="foo@bar.com"),
506 Address(email_address="hoho@bar.com"),
507 ],
508 ),
509 )
510

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
appendMethod · 0.45
mergeMethod · 0.45
flushMethod · 0.45
expunge_allMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected