MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / test_no_autobegin

Method test_no_autobegin

test/orm/test_session.py:258–318  ·  view source on GitHub ↗
(self, op, trigger)

Source from the content-addressed store, hash-verified

256 )
257 @testing.combinations("commit", "close", "rollback", None, argnames="op")
258 def test_no_autobegin(self, op, trigger):
259 User, users = self.classes.User, self.tables.users
260 Address, addresses = self.classes.Address, self.tables.addresses
261
262 self.mapper_registry.map_imperatively(
263 User, users, properties={"addresses": relationship(Address)}
264 )
265 self.mapper_registry.map_imperatively(Address, addresses)
266
267 with Session(testing.db) as sess:
268 sess.add(User(name="u1"))
269 sess.commit()
270
271 s = Session(testing.db, autobegin=False)
272
273 orm_trigger = trigger == "lazyload" or trigger == "unitofwork"
274 with expect_raises_message(
275 exc.InvalidRequestError,
276 r"Autobegin is disabled on this Session; please call "
277 r"session.begin\(\) to start a new transaction",
278 ):
279 if op or orm_trigger:
280 s.begin()
281
282 is_true(s.in_transaction())
283
284 if orm_trigger:
285 u1 = s.scalar(select(User).filter_by(name="u1"))
286 else:
287 eq_(s.scalar(select(1)), 1)
288
289 if op:
290 getattr(s, op)()
291 elif orm_trigger:
292 s.rollback()
293
294 is_false(s.in_transaction())
295
296 if trigger == "select1":
297 s.execute(select(1))
298 elif trigger == "lazyload":
299 if op == "close":
300 s.add(u1)
301 else:
302 u1.addresses
303 elif trigger == "unitofwork":
304 s.add(u1)
305
306 s.begin()
307 if trigger == "select1":
308 s.execute(select(1))
309 elif trigger == "lazyload":
310 if op == "close":
311 s.add(u1)
312 u1.addresses
313
314 is_true(s.in_transaction())
315

Callers

nothing calls this directly

Calls 15

beginMethod · 0.95
in_transactionMethod · 0.95
scalarMethod · 0.95
rollbackMethod · 0.95
executeMethod · 0.95
addMethod · 0.95
relationshipFunction · 0.90
SessionClass · 0.90
expect_raises_messageFunction · 0.90
is_trueFunction · 0.90
selectFunction · 0.90
eq_Function · 0.90

Tested by

no test coverage detected