diff --git a/tests/ConnectionTest.php b/tests/ConnectionTest.php index 10e1ea4d77..84aefe8299 100644 --- a/tests/ConnectionTest.php +++ b/tests/ConnectionTest.php @@ -32,6 +32,7 @@ use PHPUnit\Framework\TestCase; use Psr\Cache\CacheItemInterface; use Psr\Cache\CacheItemPoolInterface; +use RuntimeException; use stdClass; /** @requires extension pdo_mysql */ @@ -413,6 +414,35 @@ public function testCommitStartsTransactionInNoAutoCommitMode(): void self::assertTrue($conn->isTransactionActive()); } + public function testBeginTransactionFailureAfterCommitInNoAutoCommitMode(): void + { + $driverConnectionMock = $this->createMock(DriverConnection::class); + $driverConnectionMock->expects(self::exactly(2)) + ->method('beginTransaction') + ->willReturnOnConsecutiveCalls( + true, + self::throwException(new RuntimeException()), + ); + + $driver = $this->createStub(Driver::class); + $driverMock + ->method('connect') + ->willReturn( + $driverConnectionMock, + ); + $conn = new Connection([], $driverMock); + + $conn->setAutoCommit(false); + + $conn->connect(); + try { + $conn->commit(); + } catch (RuntimeException $e) { + } + + self::assertTrue($conn->isTransactionActive()); + } + /** @dataProvider resultProvider */ public function testCommitReturn(bool $expectedResult): void {