MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / test_duplicate_update

Method test_duplicate_update

test/orm/test_session.py:1481–1527  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

1479 sess2.add(u2)
1480
1481 def test_duplicate_update(self):
1482 users, User = self.tables.users, self.classes.User
1483
1484 self.mapper_registry.map_imperatively(User, users)
1485 Session = sessionmaker()
1486 sess = fixture_session()
1487
1488 u1 = User(name="u1")
1489 sess.add(u1)
1490 sess.flush()
1491 assert u1.id is not None
1492
1493 sess.expunge(u1)
1494
1495 assert u1 not in sess
1496 assert Session.object_session(u1) is None
1497
1498 u2 = sess.get(User, u1.id)
1499 assert u2 is not None and u2 is not u1
1500 assert u2 in sess
1501
1502 assert_raises_message(
1503 exc.InvalidRequestError,
1504 "Can't attach instance <User.*?>; another instance "
1505 "with key .*? is already "
1506 "present in this session.",
1507 sess.add,
1508 u1,
1509 )
1510
1511 sess.expunge(u2)
1512 assert u2 not in sess
1513 assert Session.object_session(u2) is None
1514
1515 u1.name = "John"
1516 u2.name = "Doe"
1517
1518 sess.add(u1)
1519 assert u1 in sess
1520 assert Session.object_session(u1) is sess
1521
1522 sess.flush()
1523
1524 sess.expunge_all()
1525
1526 u3 = sess.get(User, u1.id)
1527 assert u3 is not u1 and u3 is not u2 and u3.name == u1.name
1528
1529 def test_no_double_save(self):
1530 users = self.tables.users

Callers

nothing calls this directly

Calls 11

sessionmakerClass · 0.90
fixture_sessionFunction · 0.90
assert_raises_messageFunction · 0.90
map_imperativelyMethod · 0.80
UserClass · 0.70
addMethod · 0.45
flushMethod · 0.45
expungeMethod · 0.45
object_sessionMethod · 0.45
getMethod · 0.45
expunge_allMethod · 0.45

Tested by

no test coverage detected