(self)
| 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 |
nothing calls this directly
no test coverage detected