MCPcopy Create free account
hub / github.com/sqlalchemy/sqlalchemy / test_m2o_one_to_one

Method test_m2o_one_to_one

test/orm/test_unitofwork.py:2258–2340  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

2256 run_inserts = None
2257
2258 def test_m2o_one_to_one(self):
2259 users, Address, addresses, User = (
2260 self.tables.users,
2261 self.classes.Address,
2262 self.tables.addresses,
2263 self.classes.User,
2264 )
2265
2266 self.mapper_registry.map_imperatively(
2267 Address,
2268 addresses,
2269 properties=dict(
2270 user=relationship(
2271 self.mapper_registry.map_imperatively(User, users),
2272 lazy="select",
2273 uselist=False,
2274 )
2275 ),
2276 )
2277
2278 session = fixture_session()
2279
2280 data = [
2281 {"name": "thesub", "email_address": "bar@foo.com"},
2282 {"name": "assdkfj", "email_address": "thesdf@asdf.com"},
2283 {"name": "n4knd", "email_address": "asf3@bar.org"},
2284 {"name": "v88f4", "email_address": "adsd5@llala.net"},
2285 {"name": "asdf8d", "email_address": "theater@foo.com"},
2286 ]
2287 objects = []
2288 for elem in data:
2289 a = Address()
2290 a.email_address = elem["email_address"]
2291 a.user = User()
2292 a.user.name = elem["name"]
2293 objects.append(a)
2294 session.add(a)
2295
2296 session.flush()
2297 objects[2].email_address = "imnew@foo.bar"
2298 objects[3].user = User()
2299 objects[3].user.name = "imnewlyadded"
2300 self.assert_sql_execution(
2301 testing.db,
2302 session.flush,
2303 CompiledSQL(
2304 "INSERT INTO users (name) VALUES (:name)",
2305 {"name": "imnewlyadded"},
2306 ),
2307 AllOf(
2308 CompiledSQL(
2309 "UPDATE addresses "
2310 "SET email_address=:email_address "
2311 "WHERE addresses.id = :addresses_id",
2312 lambda ctx: {
2313 "email_address": "imnew@foo.bar",
2314 "addresses_id": objects[2].id,
2315 },

Callers

nothing calls this directly

Calls 15

relationshipFunction · 0.90
fixture_sessionFunction · 0.90
CompiledSQLClass · 0.90
AllOfClass · 0.90
eq_Function · 0.90
map_imperativelyMethod · 0.80
assert_sql_executionMethod · 0.80
AddressClass · 0.70
UserClass · 0.70
appendMethod · 0.45
addMethod · 0.45
flushMethod · 0.45

Tested by

no test coverage detected