Skip to content

Commit d360d4c

Browse files
committed
Cover how transactional() behaves in different auto commit modes
1 parent 7b723a0 commit d360d4c

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

tests/ConnectionTest.php

+42
Original file line numberDiff line numberDiff line change
@@ -396,6 +396,48 @@ public function testConnectStartsTransactionInNoAutoCommitMode(): void
396396
self::assertTrue($conn->isTransactionActive());
397397
}
398398

399+
public function testTransactionIsNotActiveAfterTransactionalInAutoCommitMode(): void
400+
{
401+
$driverMock = $this->createStub(Driver::class);
402+
$driverMock
403+
->method('connect')
404+
->willReturn(
405+
$this->createMock(DriverConnection::class),
406+
);
407+
408+
$conn = new Connection([], $driverMock);
409+
410+
$conn->setAutoCommit(true);
411+
412+
self::assertFalse($conn->isTransactionActive());
413+
414+
$conn->transactional(static function (Connection $connection): void {
415+
});
416+
417+
self::assertFalse($conn->isTransactionActive());
418+
}
419+
420+
public function testTransactionIsActiveAfterTransactionalInNoAutoCommitMode(): void
421+
{
422+
$driverMock = $this->createMock(Driver::class);
423+
$driverMock
424+
->method('connect')
425+
->willReturn(
426+
$this->createMock(DriverConnection::class),
427+
);
428+
429+
$conn = new Connection([], $driverMock);
430+
431+
$conn->setAutoCommit(false);
432+
433+
self::assertFalse($conn->isTransactionActive());
434+
435+
$conn->transactional(static function (Connection $connection): void {
436+
});
437+
438+
self::assertTrue($conn->isTransactionActive());
439+
}
440+
399441
public function testCommitStartsTransactionInNoAutoCommitMode(): void
400442
{
401443
$driverMock = $this->createMock(Driver::class);

0 commit comments

Comments
 (0)