MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / test_refresh

Method test_refresh

test/orm/test_expire.py:2080–2127  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

2078
2079class RefreshTest(_fixtures.FixtureTest):
2080 def test_refresh(self):
2081 users, Address, addresses, User = (
2082 self.tables.users,
2083 self.classes.Address,
2084 self.tables.addresses,
2085 self.classes.User,
2086 )
2087
2088 self.mapper_registry.map_imperatively(
2089 User,
2090 users,
2091 properties={
2092 "addresses": relationship(
2093 self.mapper_registry.map_imperatively(Address, addresses),
2094 backref="user",
2095 )
2096 },
2097 )
2098 s = fixture_session(autoflush=False)
2099 u = s.get(User, 7)
2100 u.name = "foo"
2101 a = Address()
2102 assert sa.orm.object_session(a) is None
2103 u.addresses.append(a)
2104 assert a.email_address is None
2105 assert id(a) in [id(x) for x in u.addresses]
2106
2107 s.refresh(u)
2108
2109 # its refreshed, so not dirty
2110 assert u not in s.dirty
2111
2112 # username is back to the DB
2113 assert u.name == "jack"
2114
2115 assert id(a) not in [id(x) for x in u.addresses]
2116
2117 u.name = "foo"
2118 u.addresses.append(a)
2119 # now its dirty
2120 assert u in s.dirty
2121 assert u.name == "foo"
2122 assert id(a) in [id(x) for x in u.addresses]
2123 s.expire(u)
2124
2125 # get the attribute, it refreshes
2126 assert u.name == "jack"
2127 assert id(a) not in [id(x) for x in u.addresses]
2128
2129 def test_persistence_check(self):
2130 users, User = self.tables.users, self.classes.User

Callers

nothing calls this directly

Calls 9

relationshipFunction · 0.90
fixture_sessionFunction · 0.90
map_imperativelyMethod · 0.80
AddressClass · 0.70
getMethod · 0.45
object_sessionMethod · 0.45
appendMethod · 0.45
refreshMethod · 0.45
expireMethod · 0.45

Tested by

no test coverage detected